why no "do : until"?

Peter Hansen peter at engcorp.com
Sun Dec 31 10:05:49 EST 2000


Kragen Sitaker wrote:
> 
> Peter Hansen  <peter at engcorp.com> wrote:
> >Kragen Sitaker wrote:
> >>
> >> The only time I wish I wasn't subject to Python's indentation rules is
> >> when I can't outdent my "if finished(): break" statements like I do in
> >> C.
> >
> >But why would you want to outdent it?  It's *part* of the loop, not a
> >following statement.  Identation should match the block structure of the
> >code, and that statement lies _within_ the block.
> 
> I would want to outdent it because, in my view, it isn't part of the
> loop body; it's part of the loop structure itself, just like the while
> 1: at the beginning.  It is not within the block of code controlled by
> the loop.  In fact, it comes *between* two blocks of code controlled by
> the loop, much as else: comes between two blocks of code controlled by
> an if (or, in Python, a for or while).

I can see your point (remarkable, given this thread, isn't it? :-).  I
guess I consider the "block" to be everything except the code that allows
entry into the block.  Within the block I might have multiple exit
conditions, each shown as separate "if/break" blocks, which are themselves
indented appropriately (and with Python, necessarily!).

But I can't argue with another view on this.  After all, in C I've been
using "brace indentation style 3" for the longest time, in apparent
violation of 98% of coding conventions in the world.  That is, my braces
are vertically aligned but indented with respect to the "if ()" or "for
()" which gets me into the block:

while (1)
   {
   T = f();
   if (T < 25)
       break;
   }

Use of that convention is probably what has made me quite happy with
Python's indentation style, which essentially matches this pattern.



More information about the Python-list mailing list