[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