Heim > Artikel > Backend-Entwicklung > Differenzanalyse der Operatoren „==“ und „is“ in Python
Vorwort
Bevor Sie über den Unterschied zwischen den beiden Operatoren is und == sprechen, müssen Sie zunächst die drei Grundelemente kennen, die in Objekten in Python enthalten sind, nämlich: id (Identitätsidentifikation), Python-Typ() (Datentyp) und Wert (Wert). Sowohl is als auch == werden zum Vergleichen und Beurteilen von Objekten verwendet, der Inhalt des Objektvergleichs und der Objektbeurteilung ist jedoch unterschiedlich. Werfen wir einen Blick auf die spezifischen Unterschiede.
Es gibt zwei Methoden, um in Python zu vergleichen, ob zwei Objekte gleich sind. Einfach ausgedrückt sind ihre Unterschiede wie folgt:
ist zu vergleichen, ob zwei Referenzen auf dasselbe Objekt verweisen (Referenzvergleich). ).
== dient zum Vergleich, ob zwei Objekte gleich sind.
>>> a = [1, 2, 3] >>> b = a >>> b is a # a的引用复制给b,他们在内存中其实是指向了用一个对象 True >>> b == a # 当然,他们的值也是相等的 True >>> b = a[:] # b通过a切片获得a的部分,这里的切片操作重新分配了对象, >>> b is a # 所以指向的不是同一个对象了 False >>> b == a # 但他们的值还是相等的 TrueImplementierungsprinzip
Objekt-Caching-Mechanismus
Python speichert bei der nächsten Verwendung ein relativ kleines Objekt im Cache-Bereich. Wenn es gefunden wird, wird kein neuer Speicher geöffnet. aber Weisen Sie weiterhin die Adresse des kleinen Objekts dem neuen Wert zu. Beispiel:
>>> c = 1 >>> d = 1 >>> print(c is d) True >>> 1000 is 10**3 False >>> 1000 == 10**3 True
Die Zuordnung wird berechnet und nutzt den Pufferbereich nicht. Dies ist aus dem ersten Codebeispiel ersichtlich.
Für Strings können Sie die Verwendung eines Puffers erzwingen, indem Sie die Funktion intern verwenden.