Ivan Pozdeev via Python-Dev wrote:
This isn't as messy as you make it sound if you remember that the outermost iterable is evaluated only once at the start and all the others -- each iteration. Anyone using comprehensions has to know this fact.
That fact alone doesn't imply anthing about the *scopes* in which those iterators are evaluated, however.
Currently the only situation where the scoping makes a difference is a generator expression that isn't immediately used, and you can get a long way into your Python career without ever encountering that case.