在Python中更改循环中断代码的范围

在Python中更改循环中断代码的范围,python,python-2.7,range,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) 通常,x==y为真并不保证x为y也为真。您的第一个代码利用了CPython中的一个特定优化,其中预分配了小整数(介于-5和257之间),因此任何对此

上面的代码运行得很好,但是当我更改变量和范围时(如下所示),它不能正常工作

number=26
for n in range(101):
    if n is number:
        print(n, "This is the magic number")
        break
    else:
        print(n)

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


一般来说,您不应该假设文字将引用同一个对象。解释器可以为文本的每次使用自由分配一个新对象。

这不是一个特别好的副本;它解释了第二个失败的原因,但没有解释第一个失败的原因。很好的答案。在此基础上,我想解释一下“is”和“==”操作符之间的区别。当您询问“a==b”时,您是在询问a的值是否等于b的值,而当您询问“a是否是b”时,您是在询问a和b是否是同一事物(从Python解释器的角度来看,即a和b是否是指向内存中同一事物的两个不同名称)。另请参阅。我对提问者表示怀疑,因为他们已经知道
=
之间的区别(因为不需要太多研究才能发现)。假设一个文本总是引用同一个对象是合理的,但Python中并非如此。
number=260
for n in range(300):
    if n is number:
        print(n, "This is the magic number")
        break
    else:
        print(n)