Pour voir la différence entre is et == en python nous allons prendre l'exemple de deux listes :
liste1 = [1,2,3]
liste2 = [1,2,3]
Si on teste l'égalité entre liste1 et liste2 à l'aide de == on va écrire:
liste1 = [1,2,3]
liste2 = [1,2,3]
liste1 == liste2
On voit ici qu'en exécutant le code on obtient True
Maintenant testons l'égalité avec is :
liste1 = [1,2,3]
liste2 = [1,2,3]
liste1 is liste2
On voit ici qu'en executant le code on obtient False
Pourquoi dans un cas on obtient True et dans l'autre cas False ? C'est simple == va comparer les valeurs de liste1 et de liste2 alors que is va regarder si les deux listes sont enregistrées au même endroit en mémoire. is et == ne vérifient donc pas la même chose !
Pour bien voir que les deux listes ne sont pas enregistrées au même endroit en mémoire on va utiliser la fonction id qui nous donne l'adresse en mémoire :
liste1 = [1,2,3]
liste2 = [1,2,3]
print(id(liste1))
print(id(liste2))
Quand on execute le code on voit donc bien que liste1 et liste2 n'ont pas la même adresse en memoire