[Python-ideas] Yield-From Example 2: Scheduler
Guido van Rossum
guido at python.org
Fri Feb 20 02:47:03 CET 2009
On Thu, Feb 19, 2009 at 5:33 PM, Adam Olsen <rhamph at gmail.com> wrote:
> On Thu, Feb 19, 2009 at 6:04 PM, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
>> So there perhaps isn't a very strong case for using 'yield
>> from' in a scheduler setting. However it still illustrates
>> the utility of being able to return a value from a generator,
>> since otherwise you would either have to explicitly raise
>> the StopIteration or resort to some convention such as
>> yield Call(g)/yield Return(x).
>
> If you can propose semantics for return that don't risk silently
> eating values then I'll at least gives -0. Until then I'm -1.
Can you explain why you feel so strongly about this? As has been
pointed out, returned values are routinely ignored in Python, it is
not an error.
>> In a wider setting, I still think there is benefit in
>> being able to abstract out pieces of generator code
>> without needing to have a special driver.
>
> Microthreads need the special driver anyway, to handle all the other
> kinds of resources.
I consider "yield from A" *primarily* a shorthand with (optimization
potential) for the oft-repeated clause
for x in A:
yield x
Given that this is a useful thing to have anyways, we might as well
give it subtle extra semantics for pass-through and returning values.
After all that is what .send(), .throw() and .close() already do for
generators: most generators don't use these, but they allow certan
advanced things to be built out of generators with more ease and
grace.
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-ideas
mailing list