我对python比较陌生,想解决我与某人之间的纠纷。假设您接受了考试或测验,并出现以下问题:
问题32: 在下面的python [IDLE]示例中:
>>> x=52
>>> x
52
>>> id(x)
505404728
505404728是:
请提供解释。感谢大家!
答案 0 :(得分:4)
id
返回guaranteed to be unique and constant for this object during its lifetime
>>> x = 52
>>> y = 52
>>> id(x)
12694616
>>> id(y)
12694616
不同的python实现(Cpython,Jython等)以不同的方式实现 - 例如cpython返回对象的内存地址。
更新:实际上,Christian Dean在评论中的答案更准确:答案是呃......' c' ?标签x
是否有id,或者它是指向值52
的指针吗?
答案 1 :(得分:4)
docs:
中有用的摘录摘录当前实现为所有实体保留了一个整数对象数组 当您在该范围内创建
-5
时,256
和int
之间的整数 实际上只是返回对现有对象的引用。
所以,回顾一下:
In [200]: x = 52
In [201]: id(x)
Out[201]: 4297372320
In [202]: id(52)
Out[202]: 4297372320
x
指向52
。 52
存储在某处的内存中。 id
返回一个“数字”,该数字在其生命周期内保证对于该对象是唯一的。
简而言之,答案是d
,因为x
和52
具有相同的引用。您可以argue c
,但可能{...}取决于您如何解释问题。
答案 2 :(得分:2)
我说正确的答案是c
。 id(x)
返回x
引用的对象的ID,52
。所以c
是正确的。这就是为什么我没有选择其他人的原因:
c
的值是52
,而不是505409528
。另外,x
没有"持有"任何东西。它是一个引用对象52
的标签。x
没有ID。它只是一个标签。 52
- 标记或引用的对象 - 确实有ID。将来,为了能够完全理解和回答您发布的问题,您需要牢固了解Python中的变量。事实资源是Ned Batchelder的一篇题为Facts and myths about Python names and values的文章。