Jeremy Hylton <jer...@alum.mit.edu> added the comment: On Mon, Feb 22, 2010 at 6:10 PM, Guido van Rossum <rep...@bugs.python.org> wrote: > > Guido van Rossum <gu...@python.org> added the comment: > > All examples so far (*) have to do with our inability to have properly nested > blocks. If we did, I'd make the except clause a block, and I'd issue a syntax > warning or error if a nested block shadowed a variable referenced outside it. > Ditto for generator expressions and comprehensions.
There's no reason we couldn't revise the language spec to explain that except clauses and comprehensions are block statements, i.e. statements that introduce a new block. For the except case, there would be some weird effects. y = 10 try: ... except SomeError as err: y = 12 print y # prints 10 In the example above, y would be a local variable in the scope of the except handler that shadows the local variable in the block that contains the try/except. It might be confusing that you couldn't assign to a local variable in the except handler without using a nonlocal statement. > As long as we don't have nested blocks, I think it's okay to see the > limitation on (implicit or explicit) "del" of a cell variable as a compiler > deficiency and fix that deficiency. The general request here is to remove all the SyntaxErrors about deleting cell variables, right? Instead, you'd get a NameError at runtime saying that the variable is currently undefined. You'd want that change regardless of whether we change the language as described above. hoping-for-some-bdfl-pronouncements-ly y'rs, Jeremy > __________ > (*) However there's also this example: > >>>> def f(): > ... try: 1/0 > ... except Exception as a: > ... def g(): return a > ... return g > ... > SyntaxError: can not delete variable 'a' referenced in nested scope >>>> > > ---------- > > _______________________________________ > Python tracker <rep...@bugs.python.org> > <http://bugs.python.org/issue4617> > _______________________________________ > ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue4617> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com