[Python-Dev] Terminology for PEP 343

Nick Coghlan ncoghlan at gmail.com
Fri Jul 1 11:59:07 CEST 2005


Raymond Hettinger wrote:
> Whatever term is selected, it should be well thought-out and added to
> the glossary.  The choice of words will likely have a great effect on
> learnability and on how people think about the new tool.

When writing PEP 346, I ended up choosing "user defined statement" as 
a generic term for the sundry ways that the 'with' statement could be 
used. Signal blocking, exception logging, transactions, resource 
management, etc. . .

For me, the key point was that to understand what a 'with' statement 
is really doing, you needed to understand the behaviour of the 
supplied object. This is far less the case with other compound Python 
statements.

For 'if' statements and 'while' loops, the supplied object will always 
be interpreted as a boolean. In 'for' loops, the supplied object is 
guaranteed to return a series of other objects. An 'except' clause 
always expects an exception type of some description.

For 'with' statements, all we really know is that the object may do 
something before the suite it is entered, and something else as the 
suite is exited. Other than that, it could be (or do) anything. Hence, 
'user defined statement'.

With that piece of terminology in place, the natural outcome was to 
call objects that supplied __enter__ and __exit__ methods "statement 
templates".

I also used this term to come up with PEP 346's name for the generator 
to statement template conversion decorator: "stmt_template"

(Like others, the fact that 'with' is a verb makes it very hard for me 
to interpret "with_template" correctly when I see it as a decorator - 
I always want to ask "with which template?")

Cheers,
Nick.

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


More information about the Python-Dev mailing list