(This is drawing to a conclusion. Summary: Tim has convinced me.) > > There are other places in Python where some rule is applied to "all > > free variables of a given piece of code" (the distinction between > > locals and non-locals in functions is made this way). But there are > > no other places where implicit local *copies* of all those free > > variables are taken. > > I didn't suggest to copy anything, just to capture the bindings in use at > the time a generator expression is evaluated. Sorry, I meant a pointer copy, not an object copy. That's a binding capture. > This is easy to explain, and trivial to explain for people familiar > with the default-argument trick. Phillip Eby already recommended not bothering with that; the default-argument rule is actually confusing for newbies (they think the defaults are evaluated at call time) so it's best not to bring this into the picture. > Whenever I've written a list-of-generators, or in the recent example > a generator pipeline, I have found it semantically necessary, > without exception so far, to capture the bindings of the variables > whose bindings wouldn't otherwise be invariant across the life of > the generator. It it turns out that this is always, or nearly > almost always, the case, across future examples too, then it would > just be goofy not to implement generator expressions that way > ("well, yes, the implementation does do a wrong thing in every > example we had, but what you're not seeing is that the explanation > would have been a line longer had the implementation done a useful > thing instead" <wink>). > > > I'd need to find a unifying principle to warrant doing that beyond > > utility. > > No you don't -- you just think you do <wink>. OK, I got it now. I hope we can find another real-life example; but there were some other early toy examples that also looked quite convincing. I'll take a pass at updating the PEP. --Guido van Rossum (home page: http://www.python.org/~guido/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4