2016-09-21 63 views
1

我在Python交互shell試過一個非常基本的代碼基本列表操作

>>> a=[1,2,3] 
>>> id(a) 
36194248L 
>>> a.append(4) 
>>> a 
[1, 2, 3, 4] 
>>> id(a) 
36194248L 
>>> 
>>> id([1,2,3]) 
36193288L 
>>> id([1,2,3].append(4)) 
506033800L 
>>> id([1,2,3].append(5)) 
506033800L 
>>> id([1,2,3].append(6)) 
506033800L 

問:當我一個列表分配給一個名爲「A」的變量,並嘗試添加更多的價值,該ID()不改變,但如果我嘗試同樣的事情,而不分配給變量,id()changes.Since列表是可變的(即允許在相同的內存地址更改),爲什麼這種行爲是可見的?

回答

4

list.append()返回None,不在列表中。

您會得到該對象的id()結果,而None是單身人士。它會總是對於給定的Python解釋器運行相同的:

>>> id(None) 
4514447768 
>>> [].append(1) is None 
True 
>>> id([].append(1)) 
4514447768 
1

因爲list.append回報None,你在呼喚id(None),這隻會有一個實例。