为什么id(a)== id(b)而id(x)!= id(y)在下面的例子中:
>>> a = 9
>>> b = 9
>>> id(a)
10901176
>>> id (b)
10901176
>>> id(a) == id(b)
True
>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> id(x) != id(y)
True
>>> id(x)
11428848
>>> id(y)
12943768
从python 3.6 doc我得到id()“返回一个对象的”身份“。这是一个整数,在它的生命周期内保证对于该对象是唯一的和常量的。两个具有非重叠生命期的对象可能有相同的id()值。“......但这并没有向我解释。有什么想法吗?
答案 0 :(得分:4)
a
和b
整数具有相同id的事实只是python对不可变对象执行的存储优化(不能依赖它,例如:如果数字足够大,{ {1}} s可以不同)
尝试更改id
的值,您会看到b
更改。
当然,列表有所不同:无法从存储优化中受益,因为它们是可变的:当您更改id(b)
时,您不希望更改x
。