python中的id( )函式
阿新 • • 發佈:2019-02-05
文章來源:百度知道
>>> 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 bTrue如果賦值的不是2而是大的數值,情況就跟前面的一樣了:>>> a=5555>>> b=5555>>> a is bFalse>>> id(a)12464372>>> id(b)12464396