在下面的python脚本中,为什么要执行第二个断言(即,将0加到257并将结果存储在y中,则x和y成为不同的对象)?谢谢!
x = 257
y = 257
assert x is y
x = 257
y = 257 + 0
assert x is not y
Run Code Online (Sandbox Code Playgroud)
整数是不可变的,因此任何更改它们的操作都会导致新的内存位置
>>> a =9876
>>> id(a)
38478552
>>> a+=1
>>> id(a)
38478576
>>> a+=0
>>> id(a)
38478528
Run Code Online (Sandbox Code Playgroud)
is正在检查对象的实际内存位置...并且基本上不应该用于检查值是否相等(尽管它可能在某些情况下的小子集上任意工作)