[Python-Dev] PEP 380 (yield from a subgenerator) comments
Ron Adam
rrr at ronadam.com
Mon Mar 30 19:54:42 CEST 2009
P.J. Eby wrote:
> Sure. But right now, the return value of a generator function *is the
> generator*. And you're free to ignore that, sure.
>
> But this is a "second" return value that only goes to a special place
> with special syntax -- without that syntax, you can't access it.
>
> But in the use cases where you'd actually want to make such a function
> return a value to begin with, it's because that value is the value you
> *really* want from the function -- the only reason it's a generator is
> because it needs to be paused and resumed along the way to getting that
> return value.
How about if 'yield from' returns the generator object, and the return
value is accessed with an attribute.
g = yield from gen
x = g.__value__
Or
x = (yield from gen).__value__
Another possibility is to be able to break from a 'yield from' at some
point and then continue it to get any final values.
# yield values of sub generator
g = yield from gen
# get remaining unused value of sub generator
x = g.next()
More information about the Python-Dev
mailing list