[Python-Dev] Proposed changes to PEP 343

Nick Coghlan ncoghlan at gmail.com
Wed Oct 12 12:25:18 CEST 2005


Jason Orendorff wrote:
> On 10/12/05, Nick Coghlan <ncoghlan at gmail.com> wrote:
> 
>>Strictly speaking this fits in with the existing confusion of "generator
>>factory" and "generator":
>>
>>Py> def g():
>>...     yield None
>>...
>>Py> type(g)
>><type 'function'>
>>Py> type(g())
>><type 'generator'>
>>
>>Most people would call "g" a generator, even though its really just a factory
>>function that returns generator objects.
> 
> 
> Not the same.  A precise term exists for "g": it's a generator function.
> PEP 255 explicitly talks about this:
> 
>     "...Note that when
>     the intent is clear from context, the unqualified name "generator" may
>     be used to refer either to a generator-function or a generator-
>     iterator."
> 
> What would the corresponding paragraph be for PEP 343?


      "...Note that when the intent is clear from context, the unqualified name
      'context manager' may be used to refer either to a 'context manager
       function' or to an actual 'context manager object'. This distinction is
       primarily relevant for generator-based context managers, and is similar
       to that between a normal generator-function and a generator-iterator."

Basically, a context manager object is an object with __enter__ and __exit__ 
methods, while the __with__ method itself is a context manager function.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://boredomandlaziness.blogspot.com


More information about the Python-Dev mailing list