"Calvin Spealman" <[EMAIL PROTECTED]> wrote: > > I know I can not do this, but what are the chances on changing the > rules so that we can? Basically, since the if __debug__: lines are > processed before runtime, would it be possible to allow them to be > used to control the inclusion or omission or entire blocks (except, > else, elif, etc.) with them being included as if they were at the same > level as the 'if __debug__:' above them?
I would say very low. try/except/finally, if/elif/else, for/else, while/else, etc., pairings of statements historically have only been grouped together when they share indent levels. If one makes two statements that don't share indent levels paired in this way, then what is stopping us from doing the following monstronsity? if ...: ... if __debug__: elif ...: ... Remember, Special cases aren't special enough to break the rules. This would be a bad special case that doesn't generalize in a satisfactory manner. > I want to allow this: > > try: > foo() > if __debug__: > except Exception, e: > import pdb > pdb.set_trace() > > So that when __debug__ is false, the except block doesn't even exist at all. And if the except clause doesn't exist at all, then unless you are following it with the finally clause of a 2.5+ unified try/except/finally, it is a syntax error. Regardless, it would be easier to read to have the following... try: foo() except Exception, e: if __debug__: import pdb pdb.set_trace() else: raise - Josiah _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com