On 21 February 2014 22:42, Chris Angelico <ros...@gmail.com> wrote: > It'd be a backward-incompatible change, but it's more likely to be > what people expect. The general assumption of "with ... as ..." is > that the thing should be used inside the block, and should be finished > with when you exit the block, so having the name valid only inside the > block does make sense. > > That's a completely separate proposal. But suppose that were to > happen, and to not require a closure. It would then make good sense to > be able to capture an exception inside an expression - and it could be > done without breaking anything. > > So, if it is to be rejected, I'd say it's on the technical grounds > that it would require a closure in CPython, and that a closure is > incompatible with the current proposal. Does that sound right? > > (It's also not a huge loss, since it's almost unused. But it's an > incompatibility between statement and expression form.)
It's probably OK to leave it in the deferred section and just note the difficulty of implementing it in a backwards compatible way, since we're *not* going to be introducing a closure. Python 3 except clauses are already a bit weird anyway, since they do an implicit delete at the end, but only if the except clause is actually triggered: >>> e = "Hello" >>> try: ... 1/0 ... except ZeroDivisionError as e: ... pass ... >>> e Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'e' is not defined >>> e = "Hello" >>> try: ... pass ... except Exception as e: ... pass ... >>> e 'Hello' Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com