[Python-Dev] Minimal 'stackless' PEP using generators? (original) (raw)

Phillip J. Eby pje at telecommunity.com
Mon Aug 23 20:59:18 CEST 2004


At 02:33 PM 8/23/04 -0400, Clark C. Evans wrote:

Perhaps it would be nice to add an alternative syntax to call a generator when you are expecting exactly one value.

def generator(): yield 'one value' def consumer(): value = generator()

We have that today:

 value, = generator()

Or do I misunderstand you?

Full-blown corountines arn't necessary. A small tweak to generators will do.

I don't think this is true. Your hypothetical example can't resume 'top()' after it yields the "co-operate" control value, unless it either it has a stack of generators, or the Python core somehow maintains a stack of the executing generators.

So, my point was that since this can already be done in user-level code with a stack of generators, I don't see the point to adding a facility to Python to create hidden stacks of generators.

Instead, it would be more useful to get rid of the one piece that really is "magic", by providing a way to pass values or exceptions into a running generator. My comment about "coroutines" was more that Guido previously expressed distaste for adding such a communication mechanism to generators as abusing the concept of a generator just being a way to implement complex iterators. Therefore, I thought a coroutine proposal (backed by a suitable syntax and an implementation plan) might have more success.



More information about the Python-Dev mailing list