可能重复:
Python “is” operator behaves unexpectedly with integers
在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")
这会返回false ???
答案 0 :(得分:6)
您不应使用is
来比较整数。请改用==
。
is
只应用于测试两个变量是否指向同一个对象。在Python中,小数字是内置的,你经常为同一个int文字获取相同的对象,但并不总是,而不是更大的数字。
答案 1 :(得分:4)
这是因为-5
到256
的所有整数都已缓存,因此您将为is
获取True
。
答案 2 :(得分:0)
您应该使用==
运算符来比较整数,并在与无或相同对象进行比较时使用is
。
>>> a = 257
>>> b = 257
>>> a is b
False
>>> a == b
True