While True 或 while 1?

3
可能重复:
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

最重要的是可读性,因为实际代码不会只是传递。所以请优先考虑可读性。 - David Heffernan
1个回答

6
编译器无法优化对True的引用,因为在Python 2中可以这样做:

True = []
if not True:
    print "oops" # :-(

幸运的是,在Python 3.2中,我遇到了SyntaxError: assignment to keyword

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接