更改Python for循环中的范围会破坏代码

时间:2016-08-22 15:37:56

标签: python python-2.7 range

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)

1 个答案:

答案 0 :(得分:4)

通常,x == y为True并不保证x is y也为True。您的第一个代码利用了CPython中的特定优化,其中预先分配了小整数(介于-5和257之间),因此任何使用这样的整数总是使用相同的对象。

通常,您永远不应该假设文字将引用同一个对象。解释器可以为文字的每次使用分配一个新对象。