相关疑难解决方法(0)

id()函数用于什么?

我阅读了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

93
推荐指数
6
解决办法
9万
查看次数

Python中的两个变量具有相同的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!

解释是什么?

python identity tuples python-3.x python-internals

44
推荐指数
3
解决办法
6231
查看次数

标签 统计

python ×2

identity ×1

python-3.x ×1

python-internals ×1

tuples ×1