我阅读了Python 2文档并注意到了这个id()函数:
返回对象的"标识".这是一个整数(或长整数),保证在该生命周期内该对象是唯一且恒定的.具有非重叠生存期的两个对象可以具有相同的id()值.
CPython实现细节:这是内存中对象的地址.
所以,我通过使用id()列表进行了实验:
>>> list = [1,2,3]
>>> id(list[0])
31186196
>>> id(list[1])
31907092 // increased by 896
>>> id(list[2])
31907080 // decreased by 12
Run Code Online (Sandbox Code Playgroud)
函数返回的整数是多少?它是C中内存地址的同义词吗?如果是这样,为什么整数不对应于数据类型的大小?
何时id()在实践中使用?
Python中的两个变量具有相同的id:
a = 10
b = 10
a is b
>>> True
Run Code Online (Sandbox Code Playgroud)
如果我拿两个lists:
a = [1, 2, 3]
b = [1, 2, 3]
a is b
>>> False
Run Code Online (Sandbox Code Playgroud)
根据这个链接, Senderle回答说,不可变对象引用具有相同的id,而像列表这样的可变对象具有不同的id.
所以现在根据他的回答,元组应该有相同的ID - 意思是:
a = (1, 2, 3)
b = (1, 2, 3)
a is b
>>> False
Run Code Online (Sandbox Code Playgroud)
理想情况下,由于元组不可变,它应该返回True,但它正在返回False!
解释是什么?