Heim > Artikel > Backend-Entwicklung > Der Unterschied zwischen ist und == Zeichen in Python
Alles in Python ist ein Objekt. Die drei Grundelemente, die in Objekten in Python enthalten sind, sind: id (Identität), type (Datentyp) und value (Wert). Sie können == oder is verwenden, um Objekte auf Gleichheit zu vergleichen. Sowohl is als auch == werden zum Vergleichen und Beurteilen von Objekten verwendet, der Inhalt des Vergleichs und der Beurteilung von Objekten ist jedoch unterschiedlich. Schauen wir uns die spezifischen Unterschiede an.
Es wird verglichen, ob die ID-Werte der beiden Objekte gleich sind, dh ob die beiden Objekte dieselbe Instanz sind Objekt. Ob es auf dieselbe Speicheradresse zeigt.
== vergleicht, ob die Inhalte zweier Objekte gleich sind. Standardmäßig wird die __eq__-Methode des Objekts aufgerufen.
== ist ein Vergleichsoperator unter den Python-Standardoperatoren, der zum Vergleichen und Bestimmen der Werte zweier Objekte verwendet wird.
Verwandte Empfehlungen: „Python-Video-Tutorial“
Schauen wir uns zunächst ein Beispiel an
>>> a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True
is wird auch als Identitätsoperator bezeichnet, der id ist Sind sie gleich?
Sehen Sie sich den Code unten an. Die IDs der Variablen a und b sind unterschiedlich, also ist b == a wahr, b ist a falsch.
Sehen Sie sich noch einmal ihre IDs an:
>>> id(a) 4364243328 >>> >>> id(b) 4364202696
In welchen Fällen haben und == genau das gleiche Ergebnis?
>>> a = 256 >>> b = 256 >>> a is b True >>> a == b True >>> a = 1000 >>> b = 10**3 >>> a == b True >>> a is b False >>>
Die Zahlentypen sind also nicht genau gleich.
Warum ist es dann bei 256 dasselbe, aber bei 1000 anders?
Aus Leistungsgründen hat Python viele interne Optimierungsarbeiten durchgeführt. Für ganzzahlige Objekte speichert Python einige häufig verwendete ganzzahlige Objekte in einer verknüpften Liste mit dem Namen small_ints Ein Ort, der auf diese ganzzahligen Objekte verweisen muss, erstellt keine neuen Objekte mehr, sondern verweist direkt auf die Objekte im Cache.
Python fügt diese kleinen Objekte, die häufig im Bereich [-5, 256] verwendet werden, in small_ints ein. Wenn Sie einige kleine Ganzzahlen verwenden müssen, nehmen Sie sie einfach von hier und erstellen Sie nicht mehr vorübergehend neue Objekte .
>>> c = 'miracle.young' >>> d = 'miracle.young' >>> c is d False >>> c == d True >>> c = 'miracleyoung' >>> d = 'miracleyoung' >>> c is c True >>> c == d True
Die String-Typen sind also nicht genau gleich, das hängt mit der Interpreter-Implementierung zusammen.
>>> a = (1,2,3) # a和b为元组类型 >>> b = (1,2,3) >>> a is b False >>> a = [1,2,3] # a和b为list类型 >>> b = [1,2,3] >>> a is b False >>> a = {'miracle':100,'young':1} # a和b为dict类型 >>> b = {'miracle':100,'young':1} >>> a is b False >>> a = set([1,2,3]) # a和b为set类型 >>> b = set([1,2,3]) >>> a is b False
Wenn es sich bei der Variablen also um eine Zahl, einen String, ein Tupel, eine Liste oder ein Wörterbuch handelt, sind is und == unterschiedlich und können nicht austauschbar verwendet werden! Wenn Sie Werte vergleichen, sollten Sie == verwenden, und wenn Sie vergleichen, ob es sich um dieselbe Speicheradresse handelt, sollten Sie is verwenden.
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen ist und == Zeichen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!