[Python-Dev] With context, please
Phillip J. Eby
pje at telecommunity.com
Sat Apr 22 18:38:13 CEST 2006
At 09:25 AM 4/22/2006 -0700, Aahz wrote:
> EXPRESSION returns a value that the with statement uses to create a
> context (a special kind of namespace). The context is used to
> execute the BLOCK. The block might end normally, get terminated by
> a break or return, or raise an exception. No matter which of those
> things happens, the context contains code to clean up after the
> block.
>
> The as NAME part is optional. If you include it, you can use NAME
> in your BLOCK
>
>Then a bit later:
>
> The protocol used by the with statement is called the context
> management protocol, and objects implementing it are context
> managers.
Okay, which means that you agree with AMK and Paul Moore that the thing you
pass to "with" is a context manager, and the thing that controls execution
is a context. Was that conclusion independently arrived at, or based on
reading e.g. the docs I wrote? Obviously, if you guys came up with that
terminology on your own, that's a stronger vote in its favor.
Btw, the phrase "special kind of namespace" seems wrong to me, since there
are no names in a context, and that phrase makes it sound like you get a
new scope. Looks to me like you could replace the word "namespace" with
"object" without changing the intended effect. (That is, I assume the
intended effect was merely to point out you're introducing a new term that
the reader is not yet expected to know.)
More information about the Python-Dev
mailing list