Die ==
Äquivalenz des Bedienertestwerts. Der is
Operator testet die Objektidentität, Python testet, ob die beiden wirklich dasselbe Objekt sind (dh an derselben Adresse im Speicher leben).
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
In diesem Beispiel hat Python nur ein Zeichenfolgenobjekt und beide erstellt a
und b
verweist darauf. Der Grund dafür ist, dass Python einige Zeichenfolgen intern zwischenspeichert und als Optimierung wiederverwendet. Es gibt wirklich nur eine Zeichenfolge 'Banane' im Speicher, die von a und b gemeinsam genutzt wird. Um das normale Verhalten auszulösen, müssen Sie längere Zeichenfolgen 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 dieselben 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.
Wenn a
sich ein Objekt auf ein Objekt bezieht und Sie es zuweisen b = a
, beziehen sich beide Variablen auf dasselbe Objekt:
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True