Heim > Backend-Entwicklung > Python-Tutorial > Warum verhält sich der „is'-Operator von Python bei bestimmten Ganzzahlen unerwartet?

Warum verhält sich der „is'-Operator von Python bei bestimmten Ganzzahlen unerwartet?

Barbara Streisand
Freigeben: 2024-12-27 16:37:11
Original
1014 Leute haben es durchsucht

Why Does Python's

Unerwartetes Verhalten des „is“-Operators mit Ganzzahlen

Der „is“-Operator in Python vergleicht die Objektidentität und testet, ob sich zwei Variablen darauf beziehen das gleiche exakte Objekt im Gedächtnis. Beim Vergleich von Ganzzahlen kann es jedoch zu unerwartetem Verhalten kommen.

Betrachten Sie das folgende Beispiel in Python 2.5.2:

>>> a = 256
>>> b = 256
>>> a is b
True           # Expected result
>>> a = 257
>>> b = 257
>>> a is b
False          # Unexpected result
Nach dem Login kopieren

Warum gibt der „is“-Operator beim Vergleich von Ganzzahlen 257 False zurück?

Die Antwort liegt in der Art und Weise, wie Python intern kleine ganze Zahlen darstellt. Laut Python-Dokumentation werden Ganzzahlen zwischen -5 und 256 in einem vorab zugewiesenen Array gespeichert. Wenn Sie eine Ganzzahl in diesem Bereich erstellen, erhalten Sie tatsächlich einen Verweis auf das entsprechende Array-Element.

Das bedeutet, dass der „is“-Operator für Ganzzahlen zwischen -5 und 256 im Wesentlichen Speicheradressen statt Ganzzahlen vergleicht Werte. Im obigen Beispiel verweisen a und b beide auf dasselbe Element im Array, daher das Ergebnis „True“.

Für ganze Zahlen außerhalb dieses Bereichs verhält sich der „is“-Operator jedoch wie erwartet. Es vergleicht die tatsächlichen Ganzzahlwerte, nicht die Speicheradressen.

Wenn Sie zwei Objekte unbekannten Typs vergleichen müssen, unabhängig davon, ob es sich um Ganzzahlen handelt oder nicht, können Sie zum Abrufen die Funktion „id()“ verwenden ihre Speicheradressen und vergleichen Sie diese stattdessen:

>>> a = 257
>>> b = 257
>>> id(a) == id(b)
False
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum verhält sich der „is'-Operator von Python bei bestimmten Ganzzahlen unerwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage