我注意到python中256以下的整数的身份比较比较特殊。看看下面的代码。
a = 256 # or any number below
b = 256
print(a is b) # True
a = 257 # or any number above
b = 257
print(a is b) # False
我的猜测是,由于数字> 256不适合8位存储位置,因此python将其移动到其他位置并存储指针。 (我不是计算机科学专业的毕业生,可能我的理解是完全错误的。)
但是,如果我使用多个分配。情况有所不同。
a, b = 257, 257 # or any number above
print(a is b) # True
这是设计使然吗?可能是为了优化内存?为什么python会这样?
ps:我正在使用Python 3.6.1