Python Keine Vergleiche: Sollten Sie „is“ oder == verwenden?
In Python wird möglicherweise eine Warnung angezeigt, wenn Sie Variablen mit vergleichen Keine bei Verwendung von ==, während bei Verwendung von is keine Warnung ausgegeben wird. Beide Syntaxen sind gültig, aber die Verwendung von „my_var is None“ wird im Allgemeinen bevorzugt.
Warum wird „is“ für „None“-Prüfungen bevorzugt?
Der Hauptunterschied zwischen ist und == liegt in ihrem Zweck. == prüft auf Gleichheit, während es auf Objektidentität prüft. Beim Vergleich von Variablen mit None möchten wir feststellen, ob es sich bei der Variablen speziell um das None-Objekt handelt und nicht nur um ein Objekt, das diesem äquivalent ist.
None ist ein eindeutiges Objekt in Python, was bedeutet, dass es nur ein Objekt gibt ein Beispiel davon. Wenn Sie „my_var is None“ verwenden, überprüfen Sie, ob „my_var“ und „None“ dasselbe Objekt sind. Diese Prüfung ist spezifischer und zuverlässiger als die Verwendung von my_var == None.
Gleichheit vs. Identität
Um den Unterschied zu veranschaulichen, betrachten Sie eine benutzerdefinierte Klasse Negator:
class Negator(object): def __eq__(self, other): return not other
Wenn Sie eine Instanz von Negator erstellen und diese mit None vergleichen, erhalten Sie:
thing = Negator() print(thing == None) # True print(thing is None) # False
thing == None gibt True zurück, da die Negator-Klasse die eq Methode, um immer „True“ zurückzugeben, wenn sie mit einem anderen Wert außer sich selbst verglichen wird. Allerdings gibt thing is None False zurück, da die beiden Objekte nicht dasselbe Objekt sind.
Fazit
Für None-Prüfungen wird im Allgemeinen die Verwendung von my_var is None bevorzugt Stellen Sie sicher, dass Sie gezielt nach dem None-Objekt suchen. == kann verwendet werden, wenn Sie die Gleichheit prüfen möchten. Beachten Sie jedoch, dass dies möglicherweise unzuverlässig ist, wenn Sie mit benutzerdefinierten Klassen arbeiten, die Vergleichsmethoden überschreiben.Das obige ist der detaillierte Inhalt vonPython None-Vergleiche: Sollten Sie „is' oder „==' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!