[Python-Dev] Re: PEP 279 (original) (raw)
Tim Peters tim.one@comcast.net
Fri, 29 Mar 2002 15:38:34 -0500
- Previous message: [Python-Dev] Re: PEP 279
- Next message: [Python-Dev] Re: PEP 279
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Raymond Hettinger, on generator exceptions]
I need help from others on py-dev who can articulate the need clearly. For me, it's as plain as day and I don't know what to say to convey the message better than it is expressed in the PEP.
I can't: "simple generators" were deliberately not coroutines, and I dislike trying to add 2-way control-flow gimmicks to them. Over the years I've found that "resumable function" is easy to get across even to C programmers , but anything fancier hits a wall. So I'd like to keep generators simple.
Generator exceptions do less damage (IMO) to simplicity than some of the other extensions, but in practice, in the very few cases I've wanted something like that, this worked fine:
class Whatever: def init(self): self._stop = 0
def stop(self):
self._stop = 1
def generator(self):
while 1:
...
yield something
if self._stop:
break
cleanup
I agree a throw() would be easier to live with, the problem is that I've so rarely needed it.
... It was meant to be a generic and oversimplified example of clean-up code in a generator being used as a data consumer.
Simple generators were designed to be data producers, and:
... Dr. Mertz's co-routine code does make a much better case,
Bingo. If you want coroutines, design a coroutine facility. Piling more semantics on to "yield" takes a delightfully simple yet powerful gimmick and hides it under ten kinds of obscurity.
- Previous message: [Python-Dev] Re: PEP 279
- Next message: [Python-Dev] Re: PEP 279
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]