2012-01-21 5 views
3

可能性の重複:
while (1) Vs. for while(True) — Why is there a difference?Trueまたは1の間は?

"真ながら、" 私は "1ながら、" 他の人のコードで時々見る代わりに。 私はTrueを使うのがもっとpythonicだと思うが、実際には の違いがあるかどうかチェックしたかった。

私は次のことを試みました。その結果は驚くべきことです。何のために 私はそれが私が とは正反対の真ではない間に、1ブール値 変換を最適化できるように見えることがわかります。

なぜ誰かが私にそれを説明することができますか、または私の結論は間違っていますか?幸いにも

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

のpython 3.2で、私はSyntaxError: assignment to keywordを取得し、:残念ながら、pythonの2に私はこれを行うことができ、ため

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 
+0

おそらく実際のコードは合格しないため、実際には問題にはなりません。したがって、読みやすさを優先します。 –

答えて

6

コンパイラはTrueへの参照を離れて最適化することはできません。

関連する問題