6
在試圖回答一個有關使用is
關鍵字的問題,我想通了,這樣的代碼:爲什麼「a是b」在交互模式下以及從腳本運行時表現不同?
腳本:
a = 123456
b = 123456
print a is b # True
交互模式:
>>> a = 123456
>>> b = 123456
>>> a is b
False
在Python交互模式和從腳本運行時提供了不同的輸出。
當前實現保持整數對象爲-5和256之間的所有整數數組,當你在這個範圍內創建一個int,你其實只是回到現有對象的引用。
所以,我預計a is b
僅在範圍[-5, 256]
整數返回True
。但只有在交互模式下才是正確的,而不是從腳本運行。
問題:爲什麼a is b
在交互模式和從腳本運行時表現不同?
注:在Python 2.7和Python 3
Python 3上的結果是一樣的。「False」表示交互式,「True」表示腳本。 – vaultah
Python 3.3表現爲2.7。有趣的是,>>> a = b; >>> a是b'返回'True'。 – Davidmh