天天看點

python優化 id()函數

>>> 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,如需轉載請自行聯系原作者