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