Heim  >  Artikel  >  Backend-Entwicklung  >  Warum wird in Python „is None“ gegenüber „== None“ bevorzugt?

Warum wird in Python „is None“ gegenüber „== None“ bevorzugt?

Barbara Streisand
Barbara StreisandOriginal
2024-11-12 20:29:01159Durchsuche

Why is

Python verstehen Kein Vergleich: „is“ vs. ==

Python-Entwickler stehen beim Vergleich einer Variablen oft vor der Frage, ob sie „is“ oder == verwenden sollen zu Keine. Während beide Optionen zu einer gültigen Syntax führen, hängt der bevorzugte Ansatz vom beabsichtigten Vergleich ab.

Objektidentität vs. Gleichheit

Der Hauptunterschied liegt in der Natur von der Vergleich: Objektidentität oder -gleichheit.

  • Objektidentität (ist): Vergleicht, ob sich zwei Variablen auf genau dasselbe Objekt beziehen Speicher.
  • Gleichheit (==): Vergleicht die Werte zweier Objekte.

Im Fall von None gibt es in Python nur ein solches Objekt. Daher prüft my_var is None, ob my_var auf dasselbe None-Objekt verweist.

Warum wird None bevorzugt?

Während beide None und == None sind Sind gültige Syntax, gilt None als expliziter und weniger fehleranfällig.

Berücksichtigen Sie die Folgende Situation:

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

thing = Negator()
print(thing == None)  # True
print(thing is None)  # False

In diesem Beispiel überschreibt die Negator-Klasse den ==-Operator, um immer das Gegenteil des Arguments zurückzugeben. Als Ergebnis wird thing == None als „True“ ausgewertet, was Wertgleichheit anzeigt. Allerdings wird thing is None korrekt als False ausgewertet, was darauf hinweist, dass thing und None nicht dasselbe Objekt sind.

Schlussfolgerung

Zur Überprüfung der Objektidentität, einschließlich Vergleichen mit Keine, dies ist der bevorzugte Ansatz. Es sorgt für Klarheit und verhindert potenzielle Mehrdeutigkeiten, die durch überschriebene Gleichheitsoperatoren verursacht werden. Denken Sie daran, dass es auf Identität prüft, während == auf Gleichheit prüft.

Das obige ist der detaillierte Inhalt vonWarum wird in Python „is None“ gegenüber „== None“ bevorzugt?. 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