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?
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.