[Python-Dev] Possible context managers in stdlib

Terry Reedy tjreedy at udel.edu
Tue Jul 12 21:38:44 CEST 2005


"Nick Coghlan" <ncoghlan at gmail.com> wrote in message 
news:42D3A766.90705 at gmail.com...
> The main outcome of the PEP 343 terminology discussion was some proposed
> documentation I put on the Sourceforge patch tracker ([1]).

Is this a proposal for the Language Reference manual?
> [1] http://www.python.org/sf/1234057
> ==========================================
> With Statements and Context Management
>> A frequent need in programming ...
>> A simpler way to achieve this in Python is to use the 'with' statement
> along with the appropriate context manager.

Somewhere about here we need the syntax itself.
> Context managers define an...
> the contained suite starts. If the 'as' clause of the 'with'

Else this does not mean much.
...
> The simplest use of context management is to strictly control the
> handling of key resources (such as files, generators, database
> connections, synchronisation locks).

I have a little trouble seeing generators (as opposed to iterables) as 
resources needing management.
> For example, the following context manager allows prompt closure of
> any resource with a 'close' method (e.g. a generator or file):

And I was not aware that they had close methods. You mean a iterable (not 
just a file) with both an associated generator and a close? Or are 
generators gaining close methods (which make no sense to me). Or are you 
using 'generator' in a different sense?
> class closing(object):
> def __init__(self, resource):
> self.resource = resource
>> def __enter__(self):
> return self.resource
>> def __exit__(self, *exc_info):
> self.resource.close()
>>> with closing(my_generator()) as g:
> # my_generator() is assigned to g via call to __enter__()
> for item in g:
> print item
> # g is closed as the with statement ends

To me, this should be with closing(my_iterable())... with 'for' calling 
g.__iter__ to get the iterator that is possibly a generator. Otherwise, I 
don't understand it.
The rest is pretty clear.
Terry J. Reedy


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /