On 02/06/2016 21:09, Rob Gaddi wrote:
Lawrence D’Oliveiro wrote:

On Friday, May 20, 2016 at 4:43:56 AM UTC+12, Herkermer Sherwood wrote:
Most keywords in Python make linguistic sense, but using "else" in for and
while structures is kludgy and misleading.

My objection is not to the choice of keyword, it’s to the whole design of the 
loop construct.

It turns out C-style for-loops “for (init; test; incr) ...” are very versatile. 
If my loop has more than one exit, I use the endless form “for (;;)” and do an 
explicit “break” for every exit condition.

Also, they let me declare a variable that is scoped to the loop, that is 
initialized just once before the loop starts, e.g.

I've had plenty of discussions on c.l.c on how much I dislike C's 'for' statement!


    for (int loopvar = initial_value;;)
      {
        if (loopvar == limit)
            break;
        ... processing ...
        if (found_what_im_looking_for)
            break;
        ++loopvar;
      } /*for*/

I wish I could do this in Python...

loopvar = initial_value
while True:
    do_your_loop_things
    if you_want_to_break_then_just:
        break
    loopvar += 1

One major objection was that C's 'for' isn't really a for-statement at all (as it is understood in most other languages that haven't just copied C's version), but is closer to a 'while' statement. Simple iterative for-loops are more of a DIY effort:

  for (i=0; i<N; ++i) {...}

maps to this while loop (expressed as Python syntax);

   i=0
   while i<N:
      ....
      i+=1

which in Python is normally written:

   for i in range(N):
      ...

The limited variable scoping is the only thing missing,

That's just part of a general feature of C where each block can have its own scope. So you can have dozens of 'i' variables within each function, provided each is defined in a separate block. (I couldn't see the point of that either!)

--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to