>>> a = 2.5
>>> b = 2.5
>>> c = b
>>> a is c
False
>>> a = 2
>>> b = 2
True
在使用is函數的時候去列印a,b分别被指派為2.5 和2的情況,發現:
>>> id(a)
21132060
>>> id(b)
19622112
29321464
當a,b為2的時候id相同,而為2.5的時候不同,這種情況在string字元串的時候也會出現,即當很短的a,b指派很短的字元串的時候,它們的id值相同,而很長的則不會;
查閱了如下的文章:
<a href="http://stackoverflow.com/questions/4293408/ids-of-immutable-types" target="_blank">http://stackoverflow.com/questions/4293408/ids-of-immutable-types</a>
<a href="http://stackoverflow.com/questions/3402679/identifying-objects-why-does-the-returned-value-from-id-change" target="_blank">http://stackoverflow.com/questions/3402679/identifying-objects-why-does-the-returned-value-from-id-change</a>
之後,得到一個簡單的結論:解釋器在對值很小的int和很短的字元串的時候做了一點小優化,隻配置設定了一個對象,讓它們id一樣了。
本文轉自 落花非有意 51CTO部落格,原文連結:http://blog.51cto.com/1992zhong/1622115,如需轉載請自行聯系原作者