En Mon, 21 Jan 2008 17:36:29 -0200, Duncan Booth <[EMAIL PROTECTED]> escribi�:
> Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote: > >> On Mon, 21 Jan 2008 17:08:46 -0200, Gabriel Genellina wrote: >> >>> The future statement is another example, even worse: >>> >>> if 0: >>> from __future__ import with_statement >>> >>> with open("xxx") as f: >>> print f >> >> In Python >=2.5 it's a compile time error if that import is not the very >> first statement in a source file. >> > That doesn't appear to be the case. With Python 2.5.1 the example > Gabriel quoted will compile and run. Yes, but now I've noticed that the 0 has some magic. The code above works with 0, 0.0, 0j and ''. Using None, False, () or [] as the condition, will trigger the (expected) syntax error. Mmm, it may be the peephole optimizer, eliminating the dead branch. This function has an empty body: def f(): if 0: print "0" if 0.0: print "0.0" if 0j: print "0j" if '': print "empty" py> dis.dis(f) 5 0 LOAD_CONST 0 (None) 3 RETURN_VALUE The other false values tested (False, None, () and []) aren't optimized out. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list