python優化 id()函數

>>> a = 2.5
>>> b = 2.5
>>> c = b
>>> a is c
False
>>> a = 2
>>> b = 2
>>> c = b
>>> a is c
True

在使用is函數的時候去打印a,b分別被賦值爲2.5 和2的情況,發現:
>>> a = 2
>>> b = 2
>>> id(a)
21132060
>>> id(b)
21132060
>>> a = 2.5
>>> b = 2.5
>>> id(a)
19622112
>>> id(b)
29321464

當a,b爲2的時候id相同,而爲2.5的時候不同,這種情況在string字符串的時候也會出現,即當很短的a,b賦值很短的字符串的時候,它們的id值相同,而很長的則不會;

查閱瞭如下的文章:
http://stackoverflow.com/questions/4293408/ids-of-immutable-types
http://stackoverflow.com/questions/3402679/identifying-objects-why-does-the-returned-value-from-id-change
之後,得到一個簡單的結論:解釋器在對值很小的int和很短的字符串的時候做了一點小優化,只分配了一個對象,讓它們id一樣了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章