如何了解python中的id()?

时间:2018-09-30 07:56:13

标签: python python-3.x

关于id()的说明:

  

有关模块内置模块中内置功能ID的帮助:

     

id(obj,/)       返回对象的身份。

     

保证在同时存在的对象中这是唯一的。       (CPython使用对象的内存地址。)

但是我发现了一件奇怪的事情,如下:

>>> id([2222]) == id([2222])
True
>>> id([2222]) == id([2223])
True
>>> id([2222]) == id([2224])
True
>>> id([2222]) == id([2225])
True
>>> id((12, 12)) == id((12, 12))
True
>>> id((12, 12)) == id((12, 13))
False
>>> id([12, 12]) == id([12, 13])
True
>>> a = [12, 12]
>>> b = [12, 13]
>>> id(a) == id(b)
False

谁能解释这个?

1 个答案:

答案 0 :(得分:4)

这样做的时候

id([2222]) == id([2223])

Python创建一个新列表,为其赋予一个成员(2222)并检查其ID(内存地址)。然后(由于不再使用该列表),它将丢弃该列表。现在,它在与旧列表相同的存储位置中创建另一个新列表,并添加2223作为其唯一成员。由于列表是在相同的内存地址建立的,因此ID将相同。

这不适用于元组,因为它们是不可变的/常数,因此具有自己的ID。