Python 重复相同的赋值是否会导致相同的id()值?

Python 重复相同的赋值是否会导致相同的id()值?,python,object,variable-assignment,Python,Object,Variable Assignment,这个问题的动机是这样的 我都误读了,而且 提供了一个拙劣的答案(我删除了它) 我在Python中重新阅读并尝试了以下内容: >>> a = 3 >>> id(a) 5392456 >>> a = 3 >>> id(a) 5392456 再重复几次 事实上,这些数字(即内存中对象的地址)是 这同样取决于实现,并且不能保证,是吗 对的他们可能会不一样,对吧?我的理解是每次我 在这个简单的赋值过程中,我创建了一个新对象并将其绑

这个问题的动机是这样的 我都误读了,而且 提供了一个拙劣的答案(我删除了它)

我在Python中重新阅读并尝试了以下内容:

>>> a = 3
>>> id(a)
5392456

>>> a = 3
>>> id(a)
5392456
再重复几次

事实上,这些数字(即内存中对象的地址)是 这同样取决于实现,并且不能保证,是吗 对的他们可能会不一样,对吧?我的理解是每次我 在这个简单的赋值过程中,我创建了一个新对象并将其绑定到一个变量 标识符,所以我不能假设它们会放在同一个地方 在记忆中


这种理解正确吗?如果是这样,是否有例外情况?

您可以做出这样的假设,但是对于不可变类型(如
int
),您的变量可能只引用不可变对象(如果它已经存在)。执行赋值时,您正在创建对对象的引用。该对象可能已经存在或可能已创建。

实现可以自由地从不进行任何内部实习。@interjay好的,那么您确认我对这一点的理解是正确的,对吗?我的例子给出了相同的内存值这一事实并不能保证。是的,你不应该指望它是相同的。
id
有用的情况非常罕见。不知道为什么我在发帖后一个多月内就被否决了。。。我认为这个问题很清楚,我也做了一些自己的步法。。想想看,所以我不能假设值是一样的,对吗?(这至少是我想用我的问题确认的)如果你给变量
a
赋值,比如说3,变量引用值为3的
int
对象。可以有多个具有相同值但不同对象的对象
id
。您关心的是,当您使用变量
a
时,您的值为3,因此python VM如何处理对象取决于实现,您不应该指望它们是相同的。