← Back to team overview

launchpad-dev team mailing list archive

Re: The with statement

 

Barry Warsaw wrote:

it doesn't scale well for more than resource;
'one'?------------------------------^

Indeed.


    >>> with open('/etc/passwd') as a, open('/etc/group') as b:
    ...     pass

That's very good news! And this presumably takes care of the "what if the second open() fails" and "what if b's cleanup depends on a being there" corner-case stuff. At this point it's not longer the thin layer of sugar I had listed as an irrelevant gripe.


I'm not sure the with-statement was designed for transactions, but one good
reason why it shouldn't be used for transactions is because (IME) proper
handling doesn't fit into pure try/finally:

We're in full agreement there. The reason I seized on this is that I saw transaction handling documented on the python site as the main justifying use-case for the exception-handling design.

So I still say: by all means use it, but let's stay away from exception-dependent and exception-eating exit handlers for as long as we can!


Jeroen



Follow ups

References