1. 程式人生 > >python為不同的對象如何分配內存的小知識

python為不同的對象如何分配內存的小知識

就是 style als blog 先後 16px 對象 .com 指向

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

參考:

1、https://www.cnblogs.com/dplearning/p/5998112.html

python為不同的對象如何分配內存的小知識