关于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
谁能解释这个?
答案 0 :(得分:4)
这样做的时候
id([2222]) == id([2223])
Python创建一个新列表,为其赋予一个成员(2222)并检查其ID(内存地址)。然后(由于不再使用该列表),它将丢弃该列表。现在,它在与旧列表相同的存储位置中创建另一个新列表,并添加2223作为其唯一成员。由于列表是在相同的内存地址建立的,因此ID将相同。
这不适用于元组,因为它们是不可变的/常数,因此具有自己的ID。