for-else
BJörn Lindqvist
bjourne at gmail.com
Tue Mar 4 10:55:27 EST 2008
On Tue, Mar 4, 2008 at 4:17 PM, Carl Banks <pavlovevidence at gmail.com> wrote:
> > for ...:
> > ...
> > exhausted:
> > ...
> > broken:
> > ...
> >
> > The meaning is explicit. While "else" seems to mean little there.
> > So I may like something similar for Python 3.x (or the removal of the
> > "else").
>
>
> I would not be opposed to this on its own merits, but there is a
> rationale behind the name "else". If you consider a for loop to be a
> rolled-up if...elif...else statement (situations where this is
> reasonable tend to be the same ones were else would be useful), then
> the "else" clause would remain unchanged on the for loop.
>
> For instance, if you have a (trivial) if...elif...else like this:
>
> if a == 0:
> do_task_0()
> elif a == 1:
> do_task_1()
> elif a == 2:
> do_task_2()
> else:
> do_default_task()
>
> You could roll it up into a for...else statement like this:
>
> for i in range(3):
> if a == i:
> do_task[a]()
> else:
> do_default_task()
You forgot the break statement. The else suite will always be executed
in this loop. Kind of proves bearophiles point, for-else is really
tricky.
--
mvh Björn
More information about the Python-list
mailing list