整数“is”运算符的意外行为
Python 的“is”运算符用于比较两个对象的身份。在给定的代码中,以下行为似乎出乎意料:
>>> a = 256 >>> b = 256 >>> a is b True # Expected result >>> a = 257 >>> b = 257 >>> a is b False # This is surprising, despite both values being equal.
要理解此行为,我们需要考虑 Python 的整数实现。对于小整数(特别是 -5 到 256 之间的整数),Python 将它们存储为不可变对象。当多个变量引用这么小的整数时,它们都指向同一个底层对象。
这解释了第一个比较,其中 a 和 b 都是对同一对象的引用,因此 b 返回 True。然而,对于大于 256 的整数,Python 将它们视为新对象,因此 a = 257 和 b = 257 创建单独的对象,并且 a is b 正确返回 False。
为了避免依赖此实现细节,它是最好使用 ==(相等运算符)来比较两个任意对象,该运算符检查对象的值是否相等,无论其身份如何。
以上是为什么 Python 的'is”运算符在处理整数时会出现异常行为?的详细内容。更多信息请关注PHP中文网其他相关文章!