[Python-Dev] Tricky way of of creating a generator via a comprehension expression

Greg Ewing greg.ewing at canterbury.ac.nz
Sat Nov 25 18:45:56 EST 2017


Serhiy Storchaka wrote:

> Ivan explained that this function should be rough equivalent to
>
>    def f():
>        t = [(yield i) for i in range(3)]
>        return (x for x in t)
> 
> This is a *rough* equivalent. There are differences in details.

The details would seem to be overwhelmingly important, though.

I take it you're saying the semantics should be "like the
above except that the returned iterator is lazy". But that
seems impossible, because f() can't return anything until it
finishes having all its values sent to it.

-- 
Greg


More information about the Python-Dev mailing list