Heim  >  Artikel  >  Backend-Entwicklung  >  Python None-Vergleich: Wann sollte ich „is' vs. „==' verwenden?

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

Susan Sarandon
Susan SarandonOriginal
2024-11-11 14:01:03743Durchsuche

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

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

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)

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!

Stellungnahme:
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