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

Serhiy Storchaka storchaka at gmail.com
Thu Nov 23 07:54:27 EST 2017


23.11.17 14:30, Antoine Pitrou пише:
> On Thu, 23 Nov 2017 14:17:32 +0200
> Serhiy Storchaka <storchaka at gmail.com> wrote:
>>
>> I used the "yield" statement, but I never used the "yield" expressions.
>> And I can't found examples. Could you please present a real-world use
>> case for the "yield" (not "yield from") expression?
> 
> Of course I can.  "yield" expressions are important for writing
> Python 2-compatible asynchronous code while avoiding callback hell:
> 
> See e.g. http://www.tornadoweb.org/en/stable/gen.html
> or https://jdb.github.io/concurrent/smartpython.html
> 
> There are tons of real-world code written using this scheme (as opposed
> to almost no real-world code, even Python 2-only, using "yield" in
> comprehensions or generation expressions).

Thank you. The tornado examples contain the following equivalence code 
for `results = yield multi(list_of_futures)`:

     results = []
     for future in list_of_futures:
         results.append(yield future)

Couldn't this by written as `results = [(yield future) for future in 
list_of_futures]`?



More information about the Python-Dev mailing list