在以下python脚本中,为什么要执行第二个断言(即,将0加到257并将结果存储在y中,则x和y成为不同的对象)?谢谢!

x = 257
y = 257
assert x is y

x = 257
y = 257 + 0
assert x is not y

最佳答案

整数是不可变的,因此任何更改它们的操作都将导致新的内存位置

>>> a =9876
>>> id(a)
38478552
>>> a+=1
>>> id(a)
38478576
>>> a+=0
>>> id(a)
38478528
is正在检查对象的实际内存位置...并且基本上不应该用于检查值的相等性(尽管它可以在某些情况下任意工作)

10-08 14:19