L' ==
équivalence de la valeur de test de l'opérateur. L' is
opérateur teste l'identité de l'objet, Python teste si les deux sont vraiment le même objet (c'est-à-dire vivent à la même adresse en mémoire).
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
Dans cet exemple, Python n'a créé qu'un seul objet chaîne, et les deux, a
et s'y b
réfère. La raison en est que Python met en cache et réutilise en interne certaines chaînes comme optimisation, il n'y a vraiment qu'une chaîne «banane» en mémoire, partagée par a et b; Pour déclencher le comportement normal, vous devez utiliser des chaînes plus longues:
>>> a = 'a longer banana'
>>> b = 'a longer banana'
>>> a == b, a is b
(True, False)
Lorsque vous créez deux listes, vous obtenez deux objets:
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
Dans ce cas, nous dirions que les deux listes sont équivalentes, car elles ont les mêmes éléments, mais pas identiques, car elles ne sont pas le même objet. Si deux objets sont identiques, ils sont également équivalents, mais s'ils sont équivalents, ils ne sont pas nécessairement identiques.
Si a
fait référence à un objet et que vous l'assignez b = a
, les deux variables font référence au même objet:
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True