[Python-Dev] PEP 340 - possible new name for
Phillip J. Eby
pje at telecommunity.com
Fri Apr 29 23:18:52 CEST 2005
At 12:05 PM 4/29/05 -0700, Aahz wrote:
>On Fri, Apr 29, 2005, Phillip J. Eby wrote:
> > At 10:42 AM 4/29/05 -0700, Aahz wrote:
> >>On Fri, Apr 29, 2005, Guido van Rossum wrote:
> >>> [Phillip J. Eby]
> >>>> Although I'd personally prefer a no-keyword approach:
> >>>> synchronized(self):
> >>>> with_file("foo") as f:
> >>>> # etc.
> >>> I'd like that too, but it was shot down at least once. Maybe we can
> >>> resurrect it?
> >>> opening("foo") as f:
> >>> # etc.
> >>I'm still -1 for the same reason I mentioned earlier: function calls
> >>spanning multiple lines are moderately common in Python code, and it's
> >>hard to distinguish these cases because multi-line calls usually get
> >>indented like blocks.
> > But the indentation of a multi-line call doesn't start with a colon.
>Neither does the un-keyworded block. It starts with a colon on the end
>of the previous line. I thought part of the point of Python was to
>minimize reliance on punctuation, especially where it's not clearly
Actually, I've just realized that I was misled by your argument into
thinking that the possibility of confusing a multi-line call and a block of
this sort is a problem. It's not, because template blocks can be viewed as
multi-line calls that just happen to include a block of code as one of the
arguments. So, mistaking one for the other when you're just skimming the
code and not looking at things like "as" or the ":", is really not important.
In the second place, the most important cue to understanding the behavior
of a template block is the template function itself; the bare syntax gives
it the most prominence. Blocks like 'synchronized(self):' should be
instantly comprehensible to Java programmers, for example, and 'retry(3):'
is also pretty self-explanatory. And so far, template function names and
signatures have been quite brief as well.
More information about the Python-Dev