While True or while 1? [duplicate]

て烟熏妆下的殇ゞ 提交于 2019-12-10 19:37:25

问题


Possible Duplicate:
while (1) Vs. for while(True) — Why is there a difference?

I see sometimes in other people code "while 1" instead of "while True". I think using True is more pythonic, but I wanted to check if there is any difference in practice.

So I tried to do the following, and the result is surprising. For what I can see it looks like the interpreter can optimize away the 1 boolean conversion while it doesn't with the True, the opposite of what I supposed.

Anyone can explain me why is that, or maybe is my conclusion wrong?

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

回答1:


The compiler can't optimize away the reference to True because, unfortunately, in python 2 I can do this:

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

Luckily, in python 3.2 I get SyntaxError: assignment to keyword.



来源:https://stackoverflow.com/questions/8953439/while-true-or-while-1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!