[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