1. 程式人生 > >python中的id( )函式

python中的id( )函式

文章來源:百度知道

>>> a=2.0 
>>> b=2.0 
>>> id(a) 
524440880 
>>> id(b) 
524440904 
>>> a=2 
>>> b=2 
>>> id(a) 
524425104 
>>> id(b)
524425104

為什麼上面輸出的值有些一樣,有些不一樣呢,求大神詳細解釋下。

--------------------------------------------------------------

id方法的返回值就是物件的記憶體地址python中會為每個出現的物件分配記憶體,哪怕他們的值完全相等(注意是相等不是相同)。如執行a=2.0,b=2.0這兩個語句時會先後為2.0這個Float型別物件分配記憶體,然後將a與b分別指向這兩個物件。所以a與b指向的不是同一物件:
>>> a=2.0>>> b=2.0>>> a is b #is就是比對2個變數的物件引用是否指向同一個物件; == 是比較兩個變數的值是否相同False>>> a==bTrue但是為了提高記憶體利用效率對於一些簡單的物件,如一些數值較小的int物件,python採取重用物件記憶體的辦法,如指向a=2,b=2時,由於2作為簡單的int型別且數值小,python不會兩次為其分配記憶體,而是隻分配一次,然後將a與b同時指向已分配的物件:>>> a=2>>> b=2>>> a is b
True如果賦值的不是2而是大的數值,情況就跟前面的一樣了:>>> a=5555>>> b=5555>>> a is bFalse>>> id(a)12464372>>> id(b)12464396