[Python-ideas] with-statement syntactic quirk
Arnaud Delobelle
arnodel at gmail.com
Wed Oct 31 22:03:26 CET 2012
On 31 October 2012 10:38, Barry Warsaw <barry at python.org> wrote:
> with-statements have a syntactic quirk, which I think would be useful to fix.
> This is true in Python 2.7 through 3.3, but it's likely not fixable until 3.4,
> unless of course it's a bug <wink>.
>
> Legal:
>
>>>> with open('/etc/passwd') as p1, open('/etc/passwd') as p2: pass
>
> Not legal:
>
>>>> with (open('/etc/passwd') as p1, open('/etc/passwd') as p2): pass
>
> Why is this useful? If you need to wrap this onto multiple lines, say to fit
> it within line length limits. IWBNI you could write it like this:
>
> with (open('/etc/passwd') as p1,
> open('/etc/passwd') as p2):
> pass
>
> This seems analogous to using parens to wrap long if-statements, but maybe
> there's some subtle corner of the grammar that makes this problematic (like
> 'with' treating the whole thing as a single context manager).
>
> Of course, you can wrap with backslashes, but ick!
No need for backslashes, just put the brackets in the right place:
with (
open('/etc/passwd')) as p1, (
open('/etc/passwd')) as p2:
pass
;)
--
Arnaud
More information about the Python-ideas
mailing list