[Python-ideas] With clauses for generator expressions

Andrew Barnert abarnert at yahoo.com
Thu Nov 15 16:32:06 CET 2012

> From: Serhiy Storchaka <storchaka at gmail.com>
> Sent: Thu, November 15, 2012 6:42:35 AM
> And what about this (only one for/if for  simplicity)?
>     with a() as f:
>          for x in f:
>             with b() as  g:
>                 if p(x):
>                      with c() as  h:
>                          yield  x

If you can only have one with per for, this doesn't have a direct translation.

However, if you want to extend it to have any number of withs per for, that 
seems to rule out option 2, and maybe option 1, but seems fine with option 3:

(x with a() as f for x in f with b() as g if p(x) with c() as h)

The fact that option 3 can obviously do something which seems impossible in 
option 2, and which I can't work out in a few seconds off the top of my head 
with option 1, may be a more compelling argument than the fact that option 1 
instinctively looked cleaner to me (and the one other person who commented on 
the three choices).

More information about the Python-ideas mailing list