Heim > Artikel > Backend-Entwicklung > Warum verhält sich der „is“-Operator bei nicht zwischengespeicherten Ganzzahlen innerhalb und außerhalb von Funktionen in Python unterschiedlich?
Der is-Operator in Python wird verwendet, um die Identität zweier Zahlen zu vergleichen Objekte, d. h. es prüft, ob sie auf dasselbe Objekt im Speicher verweisen. Beim Umgang mit nicht zwischengespeicherten Ganzzahlen kann sich der is-Operator jedoch unerwartet verhalten.
Wenn Sie den is-Operator für zwei ganze Zahlen innerhalb einer Funktion auswerten, wird True zurückgegeben. Dies zeigt an, dass sie sich auf dasselbe Objekt beziehen. Wenn Sie jedoch denselben is-Operator außerhalb der Funktion auswerten, wird False zurückgegeben, was darauf hinweist, dass sie sich auf verschiedene Objekte beziehen.
Dies liegt an der Art und Weise, wie Python das Integer-Caching handhabt. Für Ganzzahlen im Bereich [-5, 256] speichert Python die Ganzzahlobjekte zwischen und verwendet sie für nachfolgende Referenzen wieder. Das bedeutet, dass, wenn Sie mehreren Variablen innerhalb einer Funktion eine Ganzzahl innerhalb dieses Bereichs zuweisen, diese alle auf dasselbe zwischengespeicherte Objekt verweisen und daher der is-Operator „True“ zurückgibt.
Allerdings wenn Wenn Sie außerhalb einer Funktion eine Ganzzahl zuweisen, wird ein neues Ganzzahlobjekt erstellt und das zwischengespeicherte Objekt nicht verwendet. Wenn Sie also zwei ganze Zahlen außerhalb einer Funktion vergleichen, verweisen diese auf unterschiedliche Objekte und der is-Operator gibt False zurück.
Um dieses unerwartete Verhalten zu vermeiden, wird empfohlen, den Gleichheitsoperator zu verwenden (==) zum Vergleichen der Werte von Ganzzahlen anstelle des is-Operators.
Das obige ist der detaillierte Inhalt vonWarum verhält sich der „is“-Operator bei nicht zwischengespeicherten Ganzzahlen innerhalb und außerhalb von Funktionen in Python unterschiedlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!