At 05:00 PM 7/6/2007 +0200, Georg Brandl wrote: >Collin Winter schrieb: > > While experimenting with porting setuptools to py3k (as of r56155), I > > ran into this situation: > > > > class C: > > a = (4, 5) > > b = [c for c in range(2) if a] > > > > results in a "NameError: global name 'a' is not defined" error, while > > > > class C: > > a = (4, 5) > > b = [c for c in a] > > > > works fine. This gives the same error as above: > > > > class C: > > a = (4, 5) > > b = [a for c in range(2)] > > > > Both now-erroneous snippets work in 2.5.1. Was this change intentional? > >It is at least intentional in the sense that in 3k it works the same as with >genexps, which give the same errors in 2.5.
This looks like a bug to me. A list comprehension's local scope should be the locals of the enclosing code, even if its loop indexes aren't exposed to that scope. _______________________________________________ Python-3000 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com
