El ==
Operator prüft die Wertgleichheit. Der is
Operator testet die Objektidentität, und Python prüft, ob es sich tatsächlich um dasselbe Objekt handelt (d. h., ob es an derselben Adresse im Speicher liegt).
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
In diesem Beispiel hat Python nur ein String-Objekt erstellt, und beide a
y b
bezieht sich darauf. Der Grund dafür ist, dass Python einige Zeichenketten intern zwischenspeichert und wiederverwendet, um sie zu optimieren. Es gibt wirklich nur eine Zeichenkette "banana" im Speicher, die sich a und b teilen. Um das normale Verhalten auszulösen, müssen Sie längere Zeichenketten verwenden:
>>> a = 'a longer banana'
>>> b = 'a longer banana'
>>> a == b, a is b
(True, False)
Wenn Sie zwei Listen erstellen, erhalten Sie zwei Objekte:
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
In diesem Fall würden wir sagen, dass die beiden Listen äquivalent sind, weil sie die gleichen Elemente haben, aber nicht identisch, weil sie nicht dasselbe Objekt sind. Wenn zwei Objekte identisch sind, sind sie auch äquivalent, aber wenn sie äquivalent sind, sind sie nicht unbedingt identisch.
Si a
bezieht sich auf ein Objekt und Sie weisen b = a
dann beziehen sich beide Variablen auf dasselbe Objekt:
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True