Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen is und == in Python? Einführung in den Unterschied zwischen is und == in Python

Was ist der Unterschied zwischen is und == in Python? Einführung in den Unterschied zwischen is und == in Python

不言
不言nach vorne
2018-10-29 17:26:002774Durchsuche

Der Inhalt dieses Artikels befasst sich mit dem Unterschied zwischen is und == in Python? Die Einführung von is und == in Python hat einen gewissen Referenzwert. Freunde in Not können darauf verweisen.

Es gibt viele Operatoren in Python. Heute werden wir über den wesentlichen Unterschied in der Anwendung zwischen den Operatoren is und == sprechen.

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ät), type (Datentyp) und value (value). ).

Ist und == sowohl Objekte vergleichen als auch beurteilen, aber der Inhalt des Vergleichens und Beurteilens von Objekten ist unterschiedlich. Werfen wir einen Blick auf die spezifischen Unterschiede.

== Der Unterschied zwischen Vergleichsoperator und Identitätsoperator

== ist ein Vergleichsoperator unter den Python-Standardoperatoren, der zum Vergleichen und Bestimmen, ob die Werte zweier Objekte gleich sind, verwendet wird. Beispielsweise wird der Vergleich zwischen den folgenden beiden Zeichenfolgen:

Beispiel 1.

>>> a = 'cheesezh'
>>> b = 'cheesezh'
>>> a == b
True

auch als Identitätsoperator bezeichnet. Dieser Operator vergleicht und bestimmt die eindeutige Identität zwischen Objekten. ob die IDs gleich sind. Durch den Vergleich der folgenden Listen werden Sie verstehen, wie der Identitätsoperator is funktioniert:

>>> x = y = [4,5,6]
>>> z = [4,5,6]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
>>>
>>> print id(x)
3075326572
>>> print id(y)
3075326572
>>> print id(z)
3075328140

Die ersten drei Beispiele sind alle wahr, warum ist das letzte also falsch? Die Werte von x, y und z sind gleich, daher gibt es kein Problem, wenn die ersten beiden wahr sind. Warum das letzte Objekt „Falsch“ ist, erfahren Sie, wenn Sie sich die IDs der drei Objekte ansehen.

Schauen wir uns ein weiteres Beispiel an: (a==b) von a und b desselben Typs ist beide wahr, (a ist b) jedoch nicht.

>>> a = 1 #a和b为数值类型
>>> b = 1
>>> a is b
True
>>> id(a)
14318944
>>> id(b)
14318944
>>> a = 'cheesezh' #a和b为字符串类型
>>> b = 'cheesezh'
>>> a is b
True
>>> id(a)
42111872
>>> id(b)
42111872
>>> a = (1,2,3) #a和b为元组类型
>>> b = (1,2,3)
>>> a is b
False
>>> id(a)
15001280
>>> id(b)
14790408
>>> a = [1,2,3] #a和b为list类型
>>> b = [1,2,3]
>>> a is b
False
>>> id(a)
42091624
>>> id(b)
42082016
>>> a = {'cheese':1,'zh':2} #a和b为dict类型
>>> b = {'cheese':1,'zh':2}
>>> a is b
False
>>> id(a)
42101616
>>> id(b)
42098736
>>> a = set([1,2,3])#a和b为set类型
>>> b = set([1,2,3])
>>> a is b
False
>>> id(a)
14819976
>>> id(b)
14822256

Wie aus Beispiel 3 ersichtlich ist, ist a is b nur dann wahr, wenn es vom numerischen Typ und String-Typ ist. Wenn a und b vom Typ Tupel, Liste, Diktat oder Menge sind, ist a is b FALSCH.

Probieren Sie es selbst aus und sehen Sie, ob ihre IDs immer noch gleich sind, wenn a=257 und b=257. Tatsächlich Python Um die Geschwindigkeit zu optimieren, wird ein kleiner Integer-Objektpool verwendet, um häufige Anwendungen und die Zerstörung von Speicherplatz für Integer zu vermeiden. Pythons Definition kleiner Ganzzahlen ist [-5, 257) sind ihre IDs nur dann gleich, wenn sie diesen Bereich überschreiten. Ebenso haben String-Objekte keinen ähnlichen Pufferpool gleich, wenn sie den Bereich überschreiten.

Im Allgemeinen ist a und b nur dann wahr, wenn es vom numerischen Typ und vom Zeichenfolgentyp ist und sich im allgemeinen Objektpool befindet, andernfalls, wenn a und b int, str, tuple, list sind. Wenn es ein Diktat ist oder Mengentyp, a und b sind beide falsch.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen is und == in Python? Einführung in den Unterschied zwischen is und == in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen