Python None-Vergleich: Wann sollte ich „is' vs. „==' verwenden?

Susan Sarandon
Freigeben: 2024-11-11 14:01:03
Original
745 Leute haben es durchsucht

Python None Comparison: When Should I Use

Python None-Vergleich: Wann sollte „is“ vs. == verwendet werden?

Bei der Arbeit mit dem None-Wert in Python verwenden Entwickler häufig sowohl „is“ als auch „==“ zum Vergleich. Obwohl beide Ansätze syntaktisch gültig sind, hängt die empfohlene Wahl vom beabsichtigten Zweck des Vergleichs ab.

Im Allgemeinen wird „ist“ bevorzugt, wenn die Objektidentität überprüft wird, d. h. ob zwei Variablen auf genau dasselbe Objekt im Speicher verweisen . Im Gegensatz dazu prüft „==" auf Gleichheit, die je nach Implementierung des Objekts variieren kann.

Betrachten Sie die folgende benutzerdefinierte Klasse, die die Methode eq überschreibt, um Äquivalenz anders als die Objektidentität zu definieren:

class Negator(object):
    def __eq__(self,other):
        return not other

thing = Negator()
print(thing == None)    # True
print(thing is None)    # False
Nach dem Login kopieren

In diesem Beispiel gibt „==" True zurück, da die Methode eq von Negator das Standardverhalten überschreibt. „is“ gibt jedoch „Falsch“ zurück, da sich die beiden Variablen nicht auf dasselbe Objekt beziehen.

Beim Umgang mit benutzerdefinierten Klassen, bei denen die Objektidentität nicht entscheidend ist, ist „==" die geeignete Wahl zur Überprüfung der Gleichheit. Wenn Sie beispielsweise den Inhalt zweier Listen vergleichen möchten, verwenden Sie „==":

lst = [1,2,3]
lst == lst[:]  # This is True since the lists are "equivalent"
lst is lst[:]  # This is False since they're actually different objects
Nach dem Login kopieren

Im Gegensatz dazu möchten Sie gezielt prüfen, ob zwei Variablen auf genau dasselbe Objekt verweisen Im Speicher ist „is“ der bevorzugte Vergleichsoperator. Dies ist besonders wichtig, wenn Sie mit veränderlichen Objekten wie Wörterbüchern oder Listen arbeiten, bei denen sich die Änderung einer Instanz auf die andere auswirken kann, wenn es sich um dasselbe Objekt handelt:

a = [1, 2, 3]
b = a
b.append(4)
print(a, b)  # Output: [1, 2, 3, 4], [1, 2, 3, 4]

c = [1, 2, 3]
d = c
d is c  # True (same object in memory)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonPython None-Vergleich: Wann sollte ich „is' vs. „==' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage