[Python-ideas] x=(yield from) confusion [was:Yet another alternative name for yield-from]

Jim Jewett jimjjewett at gmail.com
Fri Apr 3 18:42:20 CEST 2009


On 4/3/09, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> Jim Jewett wrote:

>> yield from *as an expression* only really makes sense if the generator
>> is sending useful information *both* ways.

> No, that's not the only way it makes sense. In my
> multitasking example, none of the yields send or
> receive any values.

err... I didn't mean both directions, I meant "from the callee to the
caller as a yielded value" and "from the callee to the caller as a
final return value that can't be yielded normally."

> But they're still needed,
> because they define the points at which the task
> can be suspended.

If they don't send or receive values, then why do they need to be
expressions instead of statements?


>> The times I did remember that (even) the expression form looped,

> The yield-from expression itself doesn't loop. What
> it does do is yield multiple times,

That sounds to me like an implicit loop.

    yield from iter <==>  for val in iter: yield val

So the outside generator won't progress to its own next line (and
subsequent yield) until it has finished looping over the inner
generator.

-jJ



More information about the Python-ideas mailing list