Brian van den Broek wrote: > Can it then be further (truly :-) ) said that > > if False: > # thousands of lines of code here > > would effect the structure of the function object's bytecode, but not > its behaviour when run? Or, at most, would cause a performance effect > due to the bytecode being bloated by thousands of line's worth of code > that would never get executed? >
Yes, but that purely an implementation detail. if 0: # thousands of lines of code here has no effect at all on the bytecode, it it optimised out entirely. 'if False:' is not optimised out in Python 2.4 or earlier, but might be in later versions. Now, to really get your brain hurting, see what this one does: def hurts_my_brain(v): if 0: # unlike Steve's eg, ensuring that the global x # nested block is never hit at runtime x = v I'll give you a clue, it's not the same as your: def hurts_my_brain(v): if False: # unlike Steve's eg, ensuring that the global x # nested block is never hit at runtime x = v So the global statement is a wart which isn't executed at runtime, but behaves differently when the bytecode it doesn't generate is optimised out. -- http://mail.python.org/mailman/listinfo/python-list