可能重复:
while (1)与for while(True) — 有何区别? 我发现其他人的代码中有时使用“while 1”而不是“while True”。 我认为使用True更符合Python风格,但我想检查一下是否有实际上的区别。
所以,我尝试做以下操作,结果令人惊讶。就我所见,它看起来像解释器可以优化掉1的布尔转换,而在使用True时则不会,这与我的假设相反。
有人能解释一下这是为什么吗?或者也许我的结论是错误的?
while (1)与for while(True) — 有何区别? 我发现其他人的代码中有时使用“while 1”而不是“while True”。 我认为使用True更符合Python风格,但我想检查一下是否有实际上的区别。
所以,我尝试做以下操作,结果令人惊讶。就我所见,它看起来像解释器可以优化掉1的布尔转换,而在使用True时则不会,这与我的假设相反。
有人能解释一下这是为什么吗?或者也许我的结论是错误的?
def f1():
while 1:
pass
def f2():
while True:
pass
In [10]: dis.dis(f)
2 0 SETUP_LOOP 3 (to 6)
3 >> 3 JUMP_ABSOLUTE 3
>> 6 LOAD_CONST 0 (None)
9 RETURN_VALUE
In [9]: dis.dis(f1)
2 0 SETUP_LOOP 10 (to 13)
>> 3 LOAD_GLOBAL 0 (True)
6 POP_JUMP_IF_FALSE 12
3 9 JUMP_ABSOLUTE 3
>> 12 POP_BLOCK
>> 13 LOAD_CONST 0 (None)
16 RETURN_VALUE