Comprendre la différence entre les tests d'égalité "==" et "is" en Python
En Python, faire la distinction entre "==" et Les tests d'égalité "est" sont cruciaux lors de la réalisation de comparaisons. Bien que les deux opérateurs évaluent l'égalité, ils diffèrent dans leurs principes sous-jacents.
Test "is" :
L'opérateur "is" vérifie si deux variables font référence au même objet en mémoire. Cela signifie qu'il évalue si les deux variables pointent exactement vers le même emplacement dans la RAM de l'ordinateur.
"==" Test :
L'opérateur "==", d'autre part, compare les valeurs de deux objets. Il détermine si les valeurs stockées par les variables sont identiques.
Application aux listes :
Pour les objets immuables comme les chaînes et les entiers, "est" et "== " renvoie le même résultat. Cependant, le comportement diffère pour les objets mutables comme les listes. Considérons l'exemple suivant :
L = [] L.append(1) if L == [1]: # True if L is [1]: # False
Dans cet exemple, le test "==" renvoie True car les valeurs de la liste L et [1] sont égales. Cependant, le test "is" renvoie False car les deux variables ne font pas référence au même objet en mémoire. En effet, L est une référence à la liste d'origine, tandis que [1] est un objet de liste nouvellement créé.
Objets plus grands :
Pour les objets plus grands comme les listes, "is" ne retournera True que si les deux variables pointent exactement vers le même objet. Par exemple :
a = [1, 2, 3] b = a if b is a: # True b[:] = [4, 5, 6] if b is a: # False
Considérations sur les mises en cache :
Il convient de noter que Python met en cache de petits objets entiers et des chaînes littérales. Par conséquent, dans certains cas, "==" et "is" peuvent renvoyer le même résultat. Cependant, il s'agit d'un détail de mise en œuvre sur lequel il ne faut pas s'appuyer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!