number=26
for n in range(101):
if n is number:
print(n, "This is the magic number")
break
else:
print(n)
上面的代码运行完美,但是当我更改变量和范围时,如下所示,它无法正常工作。
number=260
for n in range(300):
if n is number:
print(n, "This is the magic number")
break
else:
print(n)
答案 0 :(得分:4)
通常,x == y
为True并不保证x is y
也为True。您的第一个代码利用了CPython中的特定优化,其中预先分配了小整数(介于-5和257之间),因此任何使用这样的整数总是使用相同的对象。
通常,您永远不应该假设文字将引用同一个对象。解释器可以为文字的每次使用分配一个新对象。