[Python-ideas] Merging a generator's "next" and "send" methods?

Andrey Fedorov anfedorov at gmail.com
Fri Feb 19 20:38:59 CET 2010


Guido van Rossum <guido at python.org> wrote:

> Because for built-in iterator types the next() method is implemented in C
> and we didn't want to invalidate existing C code by giving it an optional
> argument.


Ah, makes sense.

But why do you care?


Curiosity more than anything.

It would be elegant if .send() had identical behavior to .next() without an
argument, instead of throwing an exception, but it's no biggie.

Cheers,
Andrey

Masklinn <masklinn at masklinn.net> wrote:

> You'd have to check the ML discussions on PEP 342 (Coroutines via Enhanced
> Generators).


Sweet, thanks for the pointer. Sorry for not searching harder.

On Fri, Feb 19, 2010 at 11:32 AM, Masklinn <masklinn at masklinn.net> wrote:

> On 19 Feb 2010, at 17:12 , Andrey Fedorov wrote:
> >
> > Since .next() seems to be equivalent to .send(None), why wasn't .next()
> just
> > given an optional parameter which defaults to None?
> >
> > - Andrey
> You'd have to check the ML discussions on PEP 342 (Coroutines via Enhanced
> Generators). The PEP explicitly states that send(None) is equivalent to
> next()
>
> >   A new method for generator-iterators is proposed, called send().  It
>    takes exactly one argument, which is the value that should be "sent
>    in" to the generator.  Calling send(None) is exactly equivalent to
>    calling a generator's next() method.  Calling send() with any other
>    value is the same, except that the value produced by the generator's
>    current yield expression will be different.
>
> A new method was probably created because it would be quite unclear that
> `next(value)` sends that value into the generator for consumption by a yield
> expression. Whereas the purpose of `send(value)` looks pretty obvious.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20100219/f495d05f/attachment.html>


More information about the Python-ideas mailing list