在阅读了与我的问题非常相似的this和this之后,我仍然无法理解以下行为:
a = 257
b = 257
print(a is b) #False
a, b = 257, 257
print(a is b) #True
打印时id(a)
,id(b)
我可以看到在单独的行中分配了值的变量具有不同的 id,而对于多个赋值,两个值具有相同的 id:
a = 257
b = 257
print(id(a)) #139828809414512
print(id(b)) #139828809414224
a, b = 257, 257
print(id(a)) #139828809414416
print(id(b)) #139828809414416
但是不可能通过说多次赋值相同的值总是创建指向相同 id 的指针来解释这种行为,因为:
a, b = -1000, -1000
print(id(a)) #139828809414448
print(id(b)) #139828809414288
是否有明确的规则来解释变量何时相同id
,何时不同?
编辑
相关信息:这个问题中的代码是在交互模式下运行的(ipython3)