Heim > Artikel > Backend-Entwicklung > Beispielanalyse des Unterschieds zwischen is und == in Python
In Python prüft es, ob zwei Objekte dasselbe Objekt sind, und == prüft, ob sie gleich sind. Es ist ganz einfach, es anhand spezifischer Beispiele zu analysieren.
In Python wird überprüft, ob Wenn zwei Objekte (Variablen) gleich sind, können Sie die Operationen „is“ und „==“ verwenden, aber was ist der Unterschied zwischen ihnen? Wann sollte „is“ und wann „==“ verwendet werden? Während des Interviews stellte ich fest, dass viele Kandidaten Schwierigkeiten hatten, die beiden klar zu erklären. Daher bietet „The Zen of Python“ eine ausführliche und leicht verständliche vergleichende Einführung in die beiden.
Nehmen wir zuerst ein Beispiel
Xiao Huang war in letzter Zeit sehr wohlhabend und hat viel Geld ausgegeben, um einen P90D Tesla zu kaufen. Nennen wir dieses Auto vorübergehend „Little P“. genau das gleiche wie das Auto von Lao Wang nebenan (das Auto heißt „Xiao Wang“). Es hat das gleiche Modell, das gleiche Aussehen und den gleichen Preis und wird in der gleichen Charge hergestellt. Hier können wir sagen, dass „Little P“ und „Little Wang“ zwei identische und gleiche Vehikel (euqal) sind, aber im Wesentlichen sind sie zwei verschiedene Objekte. Eines Tages gab Xiaojun seinem Auto einen anderen Namen: „Aiju“. Wenn wir „Xiao P“ sagen, sprechen wir tatsächlich von „Aiju“, weil sich die beiden Namen im Wesentlichen auf dasselbe Auto beziehen, hier nennen wir „Little P“. „ und „Aiju“ völlig gleich (identisch).
In Python kann der Unterschied zwischen „==“ und „is“ mit diesem Beispiel verglichen werden. Ersteres ist ein Gleichheitsvergleich, der vergleicht, ob die Werte in zwei Objekten gleich sind, und letzteres ist ein Konsistenzvergleich. Es wird verglichen, ob die Speicheradressen der beiden Objekte gleich sind.
Wenn die Speicheradressen gleich sind, müssen ihre Werte natürlich auch gleich sein. Wenn also „is“ True zurückgibt, muss „==“ auch True zurückgeben, aber nicht umgekehrt .
Reden ist billig, zeig mir den Code
Erstellen Sie zuerst ein Listenobjekt, weisen Sie ihm dann einen Namen a zu und definieren Sie dann eine weitere Variable b, die auf dasselbe Objekt zeigt.
>>> a = [1, 2, 3] >>> b = a
Die gedruckten Werte von a und b sind gleich, da diese beiden Variablen auf dasselbe Objekt verweisen, genau wie wenn man einem Auto zwei verschiedene Namen gibt.
>>> a [1, 2, 3] >>> b [1, 2, 3]
Natürlich ist beides und == true.
>>> a == b True >>> a is b True
Erstellen Sie ein neues Objekt. Obwohl die Werte gleich sind, handelt es sich im Wesentlichen um zwei verschiedene Objekte und befinden sich in zwei verschiedenen Speicherbereichen, sodass „is“ „Falsch“ zurückgibt.
>>> c = [1,2,3] >>> a is c False
Ja und nur wenn die beiden verglichenen Variablen auf dasselbe Objekt zeigen, gibt „is“ True zurück und „==“ hängt letztendlich von der eq()-Methode des Objekts ab, im Wesentlichen zwei Variablen Die Vergleichsoperation „==" ruft die eq()-Methode des Objekts auf. Beispiel:
>>> class Foo(object): def eq(self, other): return True >>> f = Foo() >>> f == 1 True >>> f == None True >>> f is None False
Da die eq-Methode der benutzerdefinierten Klasse Foo immer True zurückgibt, gibt „==" bei jedem Objekt True zurück. It und None sind zwei verschiedene Objekte, daher gibt die Operation „is“ „False“ zurück.
Abschließend denken Sie bitte über diesen Code nach und warum der gleiche Vorgang zu unterschiedlichen Ergebnissen führt
>>> a = 257 >>> b = 257 >>> a is b False >>> a = 123 >>> b = 123 >>> a is b True
Zusammenfassung:
Wenn Sie vergleichen möchten Verwenden == um zu sehen, ob zwei Werte gleich sind.
Tatsächlich sind die von is in Python verglichenen Objekte den Zeigern in der C-Sprache sehr ähnlich Zeiger mit derselben Adresse sind derselbe Zeiger.
Das obige ist der detaillierte Inhalt vonBeispielanalyse des Unterschieds zwischen is und == in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!