
Tim Peters <tim_one@email.msn.com>:
If will if the "p" and "pipe" in the generator expression use the bindings in effect at the time the generator expression is assigned to pipe.
Lying awake thinking about this sort of thing last night, I found myself wondering if there should be a way of explicitly requesting that a name be evaluated at closure creation time, e.g. pipe = source for p in predicates: pipe = e for e in pipe if ^p(e) where the ^ means that p is evaluated in the enclosing scope when the closure is created, and bound to a slot which behaves like a default-argument slot (but is separate from the default arguments). This would allow the current delayed-evaluation semantics to be kept as the default, while eliminating any need for using the default-argument hack when you don't want delayed evaluation. Greg Ewing, Computer Science Dept, +--------------------------------------+ University of Canterbury, | A citizen of NewZealandCorp, a | Christchurch, New Zealand | wholly-owned subsidiary of USA Inc. | greg@cosc.canterbury.ac.nz +--------------------------------------+