Heim >Backend-Entwicklung >Python-Tutorial >Python None-Vergleiche: Sollten Sie „is' oder „==' verwenden?

Python None-Vergleiche: Sollten Sie „is' oder „==' verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-13 16:38:021049Durchsuche

Python None Comparisons: Should You Use

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!

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