Seite 1 von 1

while 1 vs while True

Verfasst: Dienstag 6. April 2010, 23:01
von jbs
Hallo,

ich dachte immer `while True` sei guter Programmierstil, aber es laufen einem ja immer wieder `while 1`s über den Weg und das nicht von Leuten die wenig Ahnung haben. `while True` ist langsamer, aber ist das so gravierend?

Was ist denn eure Empfehlung?

Verfasst: Dienstag 6. April 2010, 23:04
von DasIch
Im Zweifel in den Zen schauen:
Readability counts.
Also verwende True und False.

Verfasst: Dienstag 6. April 2010, 23:05
von sma
Ich würde bei `while True` bleiben, denn das ist "intention revealing".

Und ja, "while 1" ist unter Python 2.x ein bisschen schneller, doch who really cares...?

Code: Alles auswählen

>>> def a():
...  while 1: pass
... 
>>> dis.dis(a)
  2           0 SETUP_LOOP               3 (to 6)
        >>    3 JUMP_ABSOLUTE            3
        >>    6 LOAD_CONST               0 (None)
              9 RETURN_VALUE        
>>> def a():
...  while True: pass
... 
>>> dis.dis(a)
  2           0 SETUP_LOOP              12 (to 15)
        >>    3 LOAD_GLOBAL              0 (True)
              6 JUMP_IF_FALSE            4 (to 13)
              9 POP_TOP             
             10 JUMP_ABSOLUTE            3
        >>   13 POP_TOP             
             14 POP_BLOCK           
        >>   15 LOAD_CONST               0 (None)
             18 RETURN_VALUE        
Bei Python 3.1 ist es dann egal:

Code: Alles auswählen

>>> def a():
...  while True: pass
... 
>>> dis.dis(a)
  2           0 SETUP_LOOP               3 (to 6) 
        >>    3 JUMP_ABSOLUTE            3 
        >>    6 LOAD_CONST               0 (None) 
              9 RETURN_VALUE         
Stefan

Verfasst: Donnerstag 8. April 2010, 18:05
von Mad-Marty
Das ist primär legacy code geschuldet würde ich denken, aus der Zeit wo es kein True/False gab sondern 1/0 dafür benutzt wurde.

Ganz klar: Nimm True/False

Verfasst: Donnerstag 8. April 2010, 18:20
von jbs
mitzuhiko nutzt auch 1/0 ;)


Also aus nostalgischen Gründen in Ordnung? :D

Verfasst: Donnerstag 8. April 2010, 18:54
von DasIch
Aus nostalgischen Gründen ist nie etwas in Ordnung es sei den du machst ein schlechten Scherz über den sowieso keiner lacht. Letztere kann man sich aus offensichtlichen Gründen sparen.