Problem with generator expression and class definition
Terry Reedy
tjreedy at udel.edu
Fri Dec 7 16:07:04 EST 2007
"Maric Michaud" <maric at aristote.info> wrote in message
news:20071207164033.0550457C8B at aristote.info...
|I faced a strange behavior with generator expression, which seems like a
bug, for both
| python 2.4 and 2.5 :
Including the latest release (2.5.2)?
| >>> class A :
| ... a = 1, 2, 3
| ... b = 1, 2, 3
| ... C = list((e,f) for e in a for f in b)
| ...
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| File "<stdin>", line 4, in A
| File "<stdin>", line 4, in <genexpr>
| NameError: global name 'b' is not defined
If you switch 'a' and 'b' in the expression, it will be 'a' that is not
defined.
There was/is a known issue with generator expressions (but not list comps)
treating 'for' clauses after the first differently from the first in
respect to variable resolution. I believe I have seen this discussed on
PyDev list. But I searched the bugs.python.org for 'generator expression'
and '_ _s' and got no relevant hits.
| Any comment ? I'm ready to report it as a bug if there is no objection.
If this is in 2.5.2, (and not one else objects), go ahead.
tjr
More information about the Python-list
mailing list