[Python-ideas] Updating PEP 315: do-while loops
Arnaud Delobelle
arnodel at googlemail.com
Mon Apr 27 21:40:41 CEST 2009
On 27 Apr 2009, at 18:49, Terry Reedy wrote:
> A quick summary of my views:
>
> 1. When I programmed in C, I hardly if ever used do...while. I have
> read that this is true of other C coders also. So I see no need for
> a Python equivalent.
>
I haven't got much C that I wrote myself, but on my most recent C
project, out of 100 loops:
* 65 are while loops
* 31 are for loops
* 4 are do-while loops
In the py3k C source, out of 100 loops I see:
* 60 for loops
* 32 while loops
* 8 do-while loops
> 2. On the other hand, loop and a half use is a regular occurrence.
> Anything that does not arguably improve
>
> while True:
> part1()
> if cond: break
> part2()
>
> such as
>
> loop
> part1()
> whhile not cond:
> part2()
>
> seems pretty useless. But even the above does not work great for
> multiple "if... break"s and not at all for "if...continue".
>
This is my opinion also.
> 3. I do not see 'if cond: break' as that much of a problem. One can
> emphasize with extra whitespace indent or comment.
> if cond: break #EXIT#
>
> In any case, I see it as analogous to early return
>
> def f():
> part1()
> if cond: return
> part2()
>
> and while there are purists who object to *that*, I have not seen
> any proposals to officially support better emphasis (other than the
> existing whitespace or comment mechanisms).
>
My idea with 'break/continue if' was, in my mind, such a proposal. I
thought that it would enshrine what I perceived as a very common
construct ('if ...: break/continue') into the language and make it
easier to spot when scanning code.
> In fact, it is not uncomment to use 'return expr' instead of
> 'ret=expr; break' when a loop (for or while) is the last part of a
> def.
>
> 4. "do ... while cond:" strikes me as ugly. Aside from that, I do
> not like and would not use anything that puts the condition out of
> place, other than where it is executed. I would hate to read such
> code and expect it would confuse many others.
>
I definitely agree with this.
--
Arnaud
More information about the Python-ideas
mailing list