在Python 2.7中,我对OrderedDict
有这种行为from collections import *
id(OrderedDict())
42101904
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
id(OrderedDict())
42071680
为什么?
答案 0 :(得分:4)
这不是OrderedDict()
特有的,Python是重用释放内存来存储新对象。
来自id()
function documentation:
返回对象的“标识”。这是一个整数(或长整数),对于此对象在其生命周期内保证唯一且恒定。具有非重叠生存期的两个对象可能具有相同的
id()
值。
您正在为OrderedDict()
调用创建id()
对象,当该调用完成后,再没有其他任何内容引用该对象。因此,它会再次从内存中删除,并且 next 时间运行id(OrderedDict())
将在完全相同的内存位置创建一个新对象。
答案 1 :(得分:1)
这是id()函数的作用,它返回一个对象的唯一标识符,你创建了几个对象,所以你得到不同的id。