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

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

DDD
Freigeben: 2024-12-28 04:13:11
Original
912 Leute haben es durchsucht

Why Does Python's

Unerwartetes Verhalten des „is“-Operators mit Ganzzahlen

Pythons „is“-Operator wird verwendet, um die Identität zweier Objekte zu vergleichen. Im angegebenen Code erscheint das folgende Verhalten unerwartet:

>>> a = 256
>>> b = 256
>>> a is b
True  # Expected result
>>> a = 257
>>> b = 257
>>> a is b
False # This is surprising, despite both values being equal.
Nach dem Login kopieren

Um dieses Verhalten zu verstehen, müssen wir Pythons Implementierung von Ganzzahlen betrachten. Kleine Ganzzahlen (insbesondere solche zwischen -5 und 256) speichert Python als unveränderliche Objekte. Wenn mehrere Variablen auf eine so kleine Ganzzahl verweisen, verweisen sie alle auf dasselbe zugrunde liegende Objekt.

Dies erklärt den ersten Vergleich, bei dem sowohl a als auch b Verweise auf dasselbe Objekt sind und daher b „True“ zurückgibt. Allerdings behandelt Python ganze Zahlen größer als 256 als neue Objekte, sodass a = 257 und b = 257 separate Objekte erstellen und a is b korrekterweise False zurückgibt.

Um zu vermeiden, dass Sie sich auf dieses Implementierungsdetail verlassen, ist es Es ist besser, zwei beliebige Objekte mit == zu vergleichen, dem Gleichheitsoperator, der den Wert des Objekts unabhängig von seiner Identität auf Gleichheit prüft.

Das obige ist der detaillierte Inhalt vonWarum verhält sich der „is'-Operator von Python bei 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage