2

可能重复:
Python“is”运算符对整数的行为异常

在 python 2.6.6 中,当我使用 int() 将字符串转换为数字时,如果字符串为 257 或更大,则以下代码的行为不正确。

curr = int("256")  
myint = int("256")  
if curr is myint:  
    print("true")  
else:  
    print("false")  

这返回 true 这是正确的

curr = int("257")  
myint = int("257")  
if curr is myint:  
    print("true")  
else:  
    print("false")  

这返回错误???

4

3 回答 3

6

您不应该使用is来比较整数。改为使用==

is应该只用于测试两个变量是否指向同一个对象。在 Python 中,较小的数字会被隐藏,并且您通常会为相同的 int 文字获得相同的对象,但并非总是如此,对于较大的数字也不会。

于 2012-11-06T18:07:54.013 回答
4

那是因为从-5to 到的所有整数256都被缓存了,所以你会得到is它们True

阅读Python 整数对象实现

于 2012-11-06T18:10:23.630 回答
0

您应该使用==运算符来比较整数,并is在比较 None 或相同对象时使用。

>>> a = 257
>>> b = 257
>>> a is b
False
>>> a == b
True
于 2012-11-06T18:10:09.207 回答