[Python-Dev] Wishlist: dowhile

Nicolas Fleury nidoizo at yahoo.com
Wed Jun 15 20:37:05 CEST 2005


Guido van Rossum wrote:
> Why are you so excited about having until indented? You didn't give
> any examples with multiple occurrences. A single occurrence works just
> fine unindented, as PEP 315 has already shown.

FWIW, I must say I disagree (about "works just fine").  I find PEP 315 
counter-intuitive.  There's multi-part blocks in Python, but they all 
behave like a step-sequence where you never come back to a previous 
step.  What I mean is that after entering a finally/except/elif/else, 
there's no coming back in the try/if/for/while.  My first impression 
when looking at:

do:
     <block1>
while condition:
     <block2>

is that <block1> is executed only once.  Yes, it would not make any 
sense since you would write instead:

<block1>
while condition:
     <block2>

But, FWIW, that's still my impression.  I remember reading Stroustrup 
saying he was never using do-while loops because he find them 
counter-intuitive.  I feel the same way.  I think this is important, 
because it means that even if do-while is available in C++, some 
programmers, even the creator himself, are still always using while 
loops.  Even if different languages, I don't see why that would be 
different in Python.

My mental image of a do-while loop looks more like a while-True-if-break 
Python loop than a PEP315-like loop.  For one thing, since the loop 
content is executed at least once, I think about the condition breaking 
the loop, not the one maintaining it alive.  The keyword 'until' has 
been proposed; I guess it would be as in Perl where it is an equivalent 
of "while not".  Also, the "do" keyword means nothing to me; maybe 
something like "loop" would be better.  Still, my feeling is that Python 
is just getting it right with the status quo.

Regards,
Nicolas



More information about the Python-Dev mailing list