Heim > Artikel > Backend-Entwicklung > Python None-Vergleich: „is' oder ==?
Der Vergleich von Variablen mit None ist eine häufige Operation in Python. Möglicherweise ist Ihnen jedoch eine Diskrepanz in der verwendeten Syntax aufgefallen, die zu der Frage führt, ob „is“ oder == verwendet werden soll.
Im Allgemeinen wird empfohlen, „is“ zu verwenden, wenn Variablen mit None verglichen werden . Der Grund dafür ist, dass „is“ die Objektidentität prüft, während == die Objektgleichheit prüft. In Python gibt es nur ein None-Objekt, sodass ein Vergleich mit None mithilfe von „is“ immer „True“ zurückgibt, wenn es sich um dasselbe Objekt handelt.
Andererseits prüft == die Objektgleichheit. Dies bedeutet, dass True zurückgegeben wird, wenn die beiden Objekte gleich sind, auch wenn es sich nicht um dasselbe Objekt handelt. Betrachten Sie beispielsweise den folgenden Code:
class Negator(object): def __eq__(self, other): return not other thing = Negator() print(thing == None) # True print(thing is None) # False
In diesem Beispiel definiert die Negator-Klasse eine eq-Methode, die True zurückgibt, wenn die Objekte nicht gleich sind. Beim Vergleich von thing mit None mithilfe von == wird die benutzerdefinierte Methode eq aufgerufen, was zu True führt. Beim Vergleich mit is sehen wir jedoch, dass es sich nicht um dasselbe Objekt handelt, was zu False führt.
Wenn Sie also streng prüfen, ob ein Objekt mit None identisch ist (d. h. auf Nullität prüfen), ist es Es wird empfohlen, „is“ zu verwenden. Wenn Sie jedoch auf Gleichheit prüfen (d. h. prüfen, ob zwei Objekte den gleichen Wert haben), sollten Sie ==.
verwendenDas obige ist der detaillierte Inhalt vonPython None-Vergleich: „is' oder ==?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!