2014-02-10 82 views
0

在Python 2.7我有OrderedDict爲什麼OrderedDict有這種行爲

from collections import * 
id(OrderedDict()) 
42101904 
id(OrderedDict()) 
42071680 
id(OrderedDict()) 
42071680 
id(OrderedDict()) 
42071680 
id(OrderedDict()) 
42071680 

爲什麼這種行爲?

+1

@AshwiniChaudhary:很好找;我忘了我以前回答過這個問題。 :-) –

+0

謝謝你們,但現在我有點困惑。我試圖生成OrderedDict嵌套結構來生成xmltodict xml。所以我從子元素調用子元素將它們追加到父元素。當我多次調用該方法時,我會獲得額外的元素。雖然顯然變量不存儲在對象內部。 – luisfernando

+1

@ user3292520:這是一個完全*不同的問題。你可以提出一個新的問題,但要包含一個很好的小樣本來重現你所看到的行爲。 –

回答

4

這不是特定於OrderedDict(),Python是重複使用釋放內存來存儲新的對象。

id() function documentation

返回的對象的「身份」。這是一個整數(或長整數),對於該對象在其生命週期期間保證是唯一且恆定的。具有非重疊壽命的兩個對象可能具有相同的id()值。

你只爲id()呼叫創建OrderedDict()對象,並調用完成時有沒有別的引用對象了。它因此被從內存中再次移除,並且下一個運行時間id(OrderedDict())在完全相同的內存位置創建一個新對象。

1

這就是id()函數所做的事情,它返回一個對象的唯一標識符,您正在創建多個對象,因此您將獲得不同的ID。

相關問題