On 1/20/06, Phillip J. Eby <[EMAIL PROTECTED]> wrote: > At 10:17 AM 01/20/2006 -0800, Guido van Rossum wrote: > >The discussion about PEP 343 reminds me of the following. Bram Cohen > >pointed out in private email that, before PEP 342, there wasn't a big > >need for a shortcut to pass control to a "sub-generator" because the > >following for-loop works well enough: > > > > def main_generator(): > > ... > > for value in sub_generator(): > > yield value > > > >but now that yield can return a value, that value might have to be > >passed into sub_generator(), not to mention of exceptions. I'm sure > >there's a way to write that (although I haven't found the time to > >figure it out) but I expect it to be cumbersome and subtle. I don't > >think a helper function can be created to solve this problem, because > >the yield syntax is essential. > > > >Bram suggested the following syntax: > > > > def main_generator(): > > ... > > yieldthrough sub_generator() > > > >I'm not keen on that particular keyword, but I do believe a syntactic > >solution is needed, if the problem is important enough to be solved. > > What's the use case for this? In the coroutine use case, the PEP 342 > sample trampoline takes care of this. If you yield a sub-generator (i.e. > 'yield sub_generator()'), the trampoline effectively replaces the parent > with the child until the child is complete.
That's a rather specialized, subtle and elaborate framework though, and at this time I believe it isn't planned to be part of Python 2.5 (right?). > So, that leaves only non-coroutine use cases, and I'm having a hard time > thinking of any where there would be bidirectional communication. Any other use of generators where the return value of yield is used; as soon as you do this you may later want to refactor the code to to include sub-iterators. (There *are*other uses besides the trampoline, right? :-) -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com