[Python-ideas] for/except/else syntax
Stephen J. Turnbull
stephen at xemacs.org
Thu Oct 8 08:29:34 CEST 2009
Adam Atlas writes:
>
> On 7 Oct 2009, at 11:17, Andrey Fedorov wrote:
> > Agree with Rob that the "else" keyword confusing in the context of a
> > for loop. In my mind, "for each pebble in the bag, give it to Ben,
> > or else ..." has no clear semantic meaning. What do you mean, "or
> > else"?
>
> That wouldn't have any particular meaning in Python either (in that
> the "else" clause would never execute).
No, the else clause (as currently defined) *always* executes.
> > In my mind, better words for what "else" currently does seem to be
> > "afterwards", "atend", "ending", "thereafter", or "subsequently".
>
> I don't think any of those really sound like what the "else" clause
> does... they all just sound like something to execute when the loop is
> done, which is what happens after the loop body anyway. Switching to
> any of those words would probably only make it more unintuitive.
Since your intuition as expressed above is 100% wrong, I don't see how
switching to any of those words could possibly hurt. :-) See Steven
d'Aprano's post advocating an alternative spelling of "else" as "then"
(which is a much more compact way of saying "subsequently").
Since IIRC we *still* have only one at all common use case for this
facility, which looks like
for thing in iterable:
if thing.looks_good():
break
else:
thing = default_thing
I'm -1 on all extensions, -1 on any multiword respelling of "else", -1
on any spelling of "else" that includes the substring "break", and -0
on renaming "else" to "then" (or something like it).
More information about the Python-ideas
mailing list