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

Reply via email to