为什么以下Python代码表现出乎意料?
>>> a = 256
>>> b = 256
>>> a is b
True # This is an expected result
>>> a = 257
>>> b = 257
>>> a is b
False # What happened here? Why is this False?
>>> 257 is 257
True # Yet the literal numbers compare properly
我正在使用Python 2.5.2版本。尝试使用不同版本的Python后,发现Python 2.3.3在99和100之间表现出了上述行为。
基于以上情况,我可以假设Python内部是这样实现的: "小"整数与较大的整数存储方式不同,is
运算符可以区分它们。为什么会出现这种问题?有没有更好的方法来比较两个任意对象是否相同,而我事先不知道它们是否为数字?