[Python-Dev] PEP 343 update (with statement context terminology)
Phillip J. Eby
pje at telecommunity.com
Mon Apr 24 21:58:16 CEST 2006
At 12:49 PM 4/24/2006 -0700, Aahz wrote:
>On Mon, Apr 24, 2006, Phillip J. Eby wrote:
> > At 12:24 PM 4/24/2006 -0700, Aahz wrote:
> >>On Mon, Apr 24, 2006, Phillip J. Eby wrote:
> >>> At 04:48 AM 4/25/2006 +1000, Nick Coghlan wrote:
> >>>>
> >>>>Using two names to describe three different things isn't intuitive for
> >>>>anybody.
> >>>
> >>> Um, what three things? I only count two:
> >>>
> >>> 1. Objects with __context__
> >>> 2. Objects with __enter__ and __exit__
> >>>
> >>> What's the third thing?
> >>
> >>The actual context that's used during the execution of BLOCK. It does
> >>not exist as a concrete object,
> >
> > Um, huh? It's a thing but it's not an object? I'm lost now. I don't see
> > why we should introduce a concept that has no concrete existence into
> > something that's hard enough to explain when you stick to the objects that
> > actually exist. :)
>
>Let's go back to a pseudo-coded with statement:
>
> with EXPRESSION [as NAME]:
> BLOCK
>
>What happens while BLOCK is being executed? Again, here's what I said
>originally:
>
> 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.
>
>Do you have an alternate proposal for describing this that works well for
>newbies?
No, I like your phrasing -- but it's quite concrete. EXPRESSION returns a
value (object w/__context__) used to create a context (object w/__enter__
and __exit__).
That's only two things. There is no *third* thing here.
More information about the Python-Dev
mailing list