Lernen Sie den Python -Identitätsbetreiber und den Unterschied zwischen == und IS -Operator

Lernen Sie den Python -Identitätsbetreiber und den Unterschied zwischen == und IS -Operator

Dieser Artikel ist hauptsächlich kuratiert, um einen wichtigen Operator in Python zu erklären (“Identitätsbetreiber”) Und wie sich ein Identitätsoperator unterscheidet (Ist, ist nicht) vom Vergleichsbetreiber (==).

Identitätsbetreiber

Identitätsbetreiber ("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.

  • '==' Vergleiche, wenn beide Objektwerte identisch sind oder nicht.
  • 'Ist' Vergleiche, wenn beide das Objekt zum gleichen Speicherort gehört.

Erstellen Sie drei String -Objekte Name, Name1, Und Name2. String -Objekt Name Und Name2 wird den gleichen Wert halten und Name1 wird unterschiedliche Werte halten.

Wenn wir diese Objekte erstellen, wird das Objekt im Speicher erstellt und während der gesamten Lebensdauer des Programms verfügbar sein.

Jetzt können Sie einen Vergleichsbetreiber verwenden "==" Um zu überprüfen, ob beide Objektwerte gleich sind. Die Ausgabe des Vergleichsbetreibers ist ein Booleschen (WAHR oder FALSCH) Wert.

Objekte erstellen und vergleichen

Nachdem Sie zwei Werte verglichen haben, um die Gleichheit zu bestimmen, sehen wir uns an, wie der Identitätsbetreiber funktioniert.

Der eingebaute Ausweis() Eine Funktion wird verwendet, um das zu erhaltenIdentität”Eines Objekts. Eine Ganzzahl, die für das Objekt während seines Lebens einzigartig und konstant ist.

Um es einfach zu machen, denken Sie dies als einzigartige Regierung AUSWEIS oder EMP ID Zugewiesen wird Ihnen ebenfalls ein eindeutiger ganzzahliger Wert für jedes Objekt zugewiesen.

Eindeutiger ganzzahliger Wert

Jetzt können Sie 2 Objektreferenzen mit verwenden "Ist" Operator.

Identitätsbetreiber

Wenn ich vergleiche Name Und Name1 oder Name2 Verwenden des Identitätsbetreibers, was er im Backend tut, ist einfach ausgeführt "ID (Name) == ID (Name2)". Seit ID (Name) Und ID (Name2) Beide teilen den gleichen Speicherort, es kehrt zurück WAHR.

Jetzt kommt hier der interessante Teil. Schauen Sie sich unser vorheriges Beispiel an, wo beide Name Und Name1 haben identische Werte und geben beim Ausführen den gleichen Ganzzahlwert zurück Ausweis() Funktion. Warum denken Sie "Name_new" Und "Name_leDas Objekt ist nicht identisch, obwohl sie die gleichen Werte aus dem folgenden Screenshot teilen?

Ganzzahlwerte

Dies liegt an der Implementierung von Python Design. Wenn Sie ein ganzzahliges Objekt im Bereich erstellen (-5,256) und Stringobjekte, die größer als oder gleich zu sind 20 Zeichen, anstatt verschiedene Objekte im Speicher für denselben Wert zu erstellen, fungieren diese Objekte als Zeiger auf bereits erstellte Objekte.

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

Diagrammatische Darstellung
Zusammenfassung

In diesem Artikel haben wir gesehen, was ist ein Identitätsbetreiber. Wie Vergleichsbetreiber und Identitätsbetreiber verwendet werden, entwerfen Sie die Implementierung, wie ein Objekt im Speicher erstellt wird.