为什么OrderedDict有这种行为

时间:2014-02-10 10:51:59

标签: python python-collections

在Python 2.7中,我对OrderedDict

有这种行为
from collections import *
id(OrderedDict())
42101904
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680

为什么?

2 个答案:

答案 0 :(得分:4)

这不是OrderedDict()特有的,Python是重用释放内存来存储新对象。

来自id() function documentation

  

返回对象的“标识”。这是一个整数(或长整数),对于此对象在其生命周期内保证唯一且恒定。具有非重叠生存期的两个对象可能具有相同的id()值。

您正在为OrderedDict()调用创建id()对象,当该调用完成后,再没有其他任何内容引用该对象。因此,它会再次从内存中删除,并且 next 时间运行id(OrderedDict())将在完全相同的内存位置创建一个新对象。

答案 1 :(得分:1)

这是id()函数的作用,它返回一个对象的唯一标识符,你创建了几个对象,所以你得到不同的id。