[Python-Dev] PEP 343 - Abstract Block Redux
Nick Coghlan
ncoghlan at gmail.com
Mon May 16 13:46:40 CEST 2005
Nick Coghlan wrote:
> Steven Bethard wrote:
>
>>If I've misunderstood, and there are other situations when
>>"needs_finish" is required, it'd be nice to see some more examples.
>
>
> The problem is try/except/else blocks - those are currently legal, so the
> programmer has to make the call about whether finalisation is needed or not.
>
> I'll put this in the Open Issues section of the PEP - doing it lexically seems a
> little too magical for my taste (since it suddenly becomes more difficult to do
> partial iteration on the generator), but the decorator is a definite wart.
I had a better idea - with a decorator being used to create statement templates
out of generators, that means the __enter__() and __exit__() methods of
generators themselves are available to handle finalisation.
So, just as my PEP suggests that files be usable like:
with open(filename) as f:
for line in f:
print line
It now suggests generators be usable like:
with all_lines(filenames) as lines:
for line in lines:
print line
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
---------------------------------------------------------------
http://boredomandlaziness.blogspot.com
More information about the Python-Dev
mailing list