Während eine Frage über die Verwendung des is
Schlüsselwort zu beantworten versuchen, dachte ich, dass dieser Code aus:Warum verhält sich "a is b" im interaktiven Modus anders und wenn es vom Skript ausgeführt wird?
Script:
a = 123456
b = 123456
print a is b # True
interaktiven Modus:
>>> a = 123456
>>> b = 123456
>>> a is b
False
gab im interaktiven Python-Modus verschiedene Ausgaben und wenn es von einem Skript ausgeführt wurde.
Von this answer:
Die aktuelle Implementierung eine Reihe von Integer-Objekten für alle ganzen Zahlen zwischen -5 und 256 hält, wenn Sie einen int in diesem Bereich erstellen, erhalten Sie tatsächlich wieder einen Verweis auf das bestehende Objekt .
Also, ich würde erwarten, dass a is b
True
für ganze Zahlen im Bereich [-5, 256]
nur zurückgegeben. Dies gilt jedoch nur für den interaktiven Modus, nicht wenn es von einem Skript ausgeführt wird.
Frage: Warum verhält sich a is b
im interaktiven Modus anders und wenn es vom Skript ausgeführt wird?
Hinweis: Getestet in Python 2.7 und Python 3
Ergebnisse sind die gleichen auf Python 3. 'False' für interaktive,' True' für Skript. – vaultah
Python 3.3 verhält sich wie 2.7. Interessanterweise ist >>> a = b; >>> a ist b' gibt 'True' zurück. – Davidmh