Stephen Hansen wrote:

This is precisely why the with statement exists; to provide a cleaner way to wrap a block in setup and teardown functions. Closing is one. Yeah, you get some extra indentation-- but you sorta have to live with it if you're worried about correct code. I think it's a good compromise between your examples of nasty and nice :)

def compromise(from_, to_):
    with file(to_) as to_h:
        with file(from_) as from_h:
            for line in from_h:
               print >> to_h, munge(line)

It's just too bad that 'with' doesn't support multiple separate "x as y" clauses.

The developers already agreed with you ;-).

"With more than one item, the context managers are processed as if multiple with statements were nested:

with A() as a, B() as b:
    suite
is equivalent to

with A() as a:
    with B() as b:
        suite
Changed in version 3.1: Support for multiple context expressions.
"

(I suspect this will also be in 2.7)

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to