From: Alex Martelli [mailto:firstname.lastname@example.org]
On Sunday 02 February 2003 11:07 pm, Brett Cannon wrote: ...
Now if ``__exit__()`` would be executed regardless of exceptions this would probably eliminate a decent chunk of code that uses ``finally:``
Hmmm, yes, I _was_ sort of assuming that __exit__ runs much like 'finally' would -- otherwise cleanup/release code would more often than not have to be duplicated.
I don't think there's much point to new syntax if __exit__ *doesn't* run even in the face of exceptions. To my mind, that's the whole point of the construct - guaranteed cleanup.
Either way this seems rather nice. And if you can pass in arguments (as I think ``FILE = file('blah.txt', 'rb'): (some_argument):`` is supposed to implement) this would be really nice. =)
I think THAT is the complicated part of the "do" syntax -- that trailing "(whatever):" that I don't understand. What would its pluses be? Where would that 'whatever' be directed to...? Could you please provide a use case for with + "(some_argument):" ...?
Having just seen Samuele's examples, I notice that he uses the trailing argument. And I still don't understand it :-( There's no way I can see the "do" syntax as even remotely natural for the example of a file autoclose (and by inference, any reasonably common cleanup requirement).
Is there any additional advantage to the "do" syntax that isn't shared by the "with" syntax? A full example like the autoclose one would help enormously!