On 10/31/2012 10:03 PM, Arnaud Delobelle wrote:
On 31 October 2012 10:38, Barry Warsaw
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
;)
Because that's not confusing. Why not write: with open('/etc/passwd' ) as p1, open( '/etc/passwd') as p2: pass