【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
False
>>> a==b
True
但是為了提高內存利用效率對於一些簡單的對象,如一些數值較小的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 b
False
>>> id(a)
12464372
>>> id(b)
12464396

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM