Website-Suche

Lernen Sie den Python-Identitätsoperator und den Unterschied zwischen den Operatoren „==“ und „IS“ kennen


Dieser Artikel dient hauptsächlich der Erläuterung eines wichtigen Operators in Python („IDENTITY OPERATOR“) und der Unterschiede zwischen Identitätsoperatoren (is, is not). ) vom Vergleichsoperator (==).

IDENTITÄTSOPERATOR

Der Identitätsoperator („ist“ und „ist nicht“) wird verwendet, um den Speicherort des Objekts zu vergleichen. Wenn ein Objekt im Speicher erstellt wird, wird diesem Objekt eine eindeutige Speicheradresse zugewiesen.

  • ‘==’ vergleicht, ob beide Objektwerte identisch sind oder nicht.
  • ‘is’ vergleicht, ob beide Objekte zum selben Speicherort gehören.

Erstellen Sie drei Zeichenfolgenobjekte Name, Name1 und Name2. Die Zeichenfolgenobjekte Name und Name2 enthalten denselben Wert und Name1 unterschiedliche Werte.

Wenn wir diese Objekte erstellen, geschieht hinter den Kulissen, dass dieses Objekt im Speicher erstellt wird und während der Lebensdauer des Programms verfügbar ist.

Jetzt können Sie mit dem Vergleichsoperator “== ” prüfen, ob beide Objektwerte gleich sind. Die Ausgabe des Vergleichsoperators ist ein boolescher Wert (True oder False).

Nachdem Sie nun zwei Werte verglichen haben, um die Gleichheit festzustellen, werfen wir einen Blick auf die Funktionsweise des Identitätsoperators.

Die integrierte Funktion Id() wird verwendet, um die „Identität“ eines Objekts abzurufen. Eine Ganzzahl, die für das Objekt während seiner Lebensdauer eindeutig und konstant ist.

Um es einfach zu machen: Stellen Sie sich vor, dass dies eine eindeutige Regierungs-ID oder Emp-ID ist, die Ihnen zugewiesen wurde. Ebenso wird jedem Objekt ein eindeutiger ganzzahliger Wert zugewiesen.

Jetzt können Sie zwei Objektreferenzen mit dem Operator „is“ vergleichen.

Wenn ich Name und Name1 oder Name2 mit dem Identitätsoperator vergleiche, führt es im Backend einfach “id(Name“ aus ) == id(Name2) ”. Da id(Name) und id(Name2) beide denselben Speicherort teilen, wird True zurückgegeben.

Jetzt kommt der interessante Teil. Schauen Sie sich unser vorheriges Beispiel an, in dem sowohl Name als auch Name1 identische Werte haben und denselben ganzzahligen Wert zurückgeben, wenn wir die Funktion id() ausführen. Warum sind die Objekte „Name_new“ und „Name_le“ Ihrer Meinung nach nicht identisch, obwohl sie dieselben Werte wie im folgenden Screenshot haben?

Dies liegt an der Implementierung des Python-Designs. Wenn Sie ein ganzzahliges Objekt im Bereich (-5.256) und Zeichenfolgenobjekte größer oder gleich 20 Zeichen erstellen, erstellen Sie für diese Objekte nicht verschiedene Objekte im Speicher für denselben Wert fungieren als Zeiger auf bereits erstellte Objekte.

Die folgende bildliche Darstellung gibt Ihnen eine klare Vorstellung davon, was wir bisher in diesem Artikel gesehen haben.

Zusammenfassung

In diesem Artikel haben wir gesehen, was ein Identitätsoperator ist. Wie Vergleichsoperator und Identitätsoperator verwendet werden, Entwurfsimplementierung, wie ein Objekt im Speicher erstellt wird.