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