er Operator @ 'is' verhält sich unerwartet bei nicht zwischengespeicherten Ganzzahlen

Wenn ich mit dem Python-Interpreter herumspielte, stieß ich auf diesen widersprüchlichen Fall bezüglich desis Operator

Wenn die Auswertung in der Funktion erfolgt, wird @ zurückgegebTrue, wenn es außerhalb gemacht wird, gibt es @ zurüFalse.

>>> def func():
...     a = 1000
...     b = 1000
...     return a is b
...
>>> a = 1000
>>> b = 1000
>>> a is b, func()
(False, True)

Seit deris Operator wertet das @ aid() 's für die betroffenen Objekte, das bedeutet, dassa undb Punkt auf das gleicheint Instanz, wenn innerhalb der Funktion @ deklariefunc Im Gegenteil, sie zeigen auf ein anderes Objekt, wenn sie sich außerhalb des Objekts befinden.

Warum ist das so

Hinwei: Mir ist der Unterschied zwischen Identität is) und Gleichheit ==) Operationen wie in @ beschriebUnderstanding Pythons "ist" Operator. Darüber hinaus ist mir auch das Caching bekannt, das von Python für die Ganzzahlen in range @ ausgeführt wir[-5, 256] wie in @ beschrieb "is" -Operator verhält sich unerwartet mit ganzen Zahlen.

Dies ist hier nicht der Fall da die Zahlen außerhalb dieses Bereichs liegen undIch mach möchte Identität bewerten undnich Gleichberechtigung

Antworten auf die Frage(4)

Ihre Antwort auf die Frage