在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:这是一个完全*不同的问题。你可以提出一个新的问题,但要包含一个很好的小样本来重现你所看到的行为。 –