Der Unterschied zwischen ist und == Zeichen in Python

爱喝马黛茶的安东尼
Freigeben: 2019-06-24 11:48:04
Original
2823 Leute haben es durchsucht

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.

Der Unterschied zwischen ist und == Zeichen in Python

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
>>>
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage