Probably because of the fact it is possible to set True equal to False and consequently then invalidate loop logic as presented below:
True = False while True: ... On the other hand `1' will always be evaluated as a constant. Don't know, just guessing. Matteo On Jan/21, Andrea Crotti wrote: > 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 > > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://www.matteolandi.net -- http://mail.python.org/mailman/listinfo/python-list