在Python 2.7我有OrderedDict爲什麼OrderedDict有這種行爲
from collections import *
id(OrderedDict())
42101904
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
爲什麼這種行爲?
在Python 2.7我有OrderedDict爲什麼OrderedDict有這種行爲
from collections import *
id(OrderedDict())
42101904
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
爲什麼這種行爲?
這不是特定於OrderedDict()
,Python是重複使用釋放內存來存儲新的對象。
返回的對象的「身份」。這是一個整數(或長整數),對於該對象在其生命週期期間保證是唯一且恆定的。具有非重疊壽命的兩個對象可能具有相同的
id()
值。
你只爲id()
呼叫創建OrderedDict()
對象,並調用完成時有沒有別的引用對象了。它因此被從內存中再次移除,並且下一個運行時間id(OrderedDict())
在完全相同的內存位置創建一個新對象。
這就是id()函數所做的事情,它返回一個對象的唯一標識符,您正在創建多個對象,因此您將獲得不同的ID。
@AshwiniChaudhary:很好找;我忘了我以前回答過這個問題。 :-) –
謝謝你們,但現在我有點困惑。我試圖生成OrderedDict嵌套結構來生成xmltodict xml。所以我從子元素調用子元素將它們追加到父元素。當我多次調用該方法時,我會獲得額外的元素。雖然顯然變量不存儲在對象內部。 – luisfernando
@ user3292520:這是一個完全*不同的問題。你可以提出一個新的問題,但要包含一個很好的小樣本來重現你所看到的行爲。 –