python對變數賦值為什麼會出現以下的情況?
01-02
如下的賦值語句。
x=2
y=2
x is y
&>&>&> true
但是運行以下的代碼:
x=200000000
y=200000000
x is y
&>&>&> false
這是怎麼一回事呢?聽網上的解釋是數據長短的問題?本人python初學者,請各位不吝賜教,謝謝。
python裡面任何東西都是對象,好吧,不怎麼嚴謹。
程序中,比較小的數字對象太常見了,如果每次都動態創建銷毀這些對象,會造成很大的性能浪費,因此python對-5到257,好像是這個範圍,這些整數預先建立了對象,因此2 is 2 == True。超過這個範圍,就沒有必要預建立對象了,浪費內存。
Python 有小整數對象池,不必用到一個數就創建一個對象。像 x=2, y=2 這樣就直接引用同一個對象,所以用 is 比較就 True 了啦。但是顯然不可能在內存里維護 200000000 個數的對象嘛。
a = 10000000000000000
b = 10000000000000000
print a == b
print a is b
True
True
為什麼我的是這樣的。。。。。
推薦閱讀:
※在同一台電腦下如何進行 Python 2 與 3 的切換?
※python3是如何處理字元異常的?
※python3.5 pip 安裝lxml出錯?
※python3如何查找list1中有而list2中沒有的元素??
※為何我用sublime text3編譯python turtle畫圖後窗口自動關閉?