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?  Forget about the internal mechanics of what really happens, we
must have a simple way of describing the with block itself!
-- 
Aahz ([EMAIL PROTECTED])           <*>         http://www.pythoncraft.com/

"Argue for your limitations, and sure enough they're yours."  --Richard Bach
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to