0

在 Python 2.7 中,我对 OrderedDict 有这种行为

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

为什么?

4

2 回答 2

4

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

id()功能文档

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

只是为callOrderedDict()创建一个对象,当该调用完成时,没有其他引用该对象的东西了。因此它会再次从内存中删除,并且下次运行时会在完全相同的内存位置创建一个新对象。id()id(OrderedDict())

于 2014-02-10T10:53:11.320 回答
1

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

于 2014-02-10T10:53:45.347 回答