[Python-ideas] Nudging beginners towards a more accurate mental model for loop else clauses
Jan Kaliszewski
zuo at chopin.edu.pl
Sat Jun 9 18:01:13 CEST 2012
Nick Coghlan dixit (2012-06-08, 19:04):
> for x in iterable:
> ...
> except break: # Implicit in the semantics of loops
> pass
> else:
> ...
>
> Would it be worth adding the "except break:" clause to the language
> just to make it crystal clear what is actually going on? I don't think
> so, but it's still a handy way to explain the semantics while gently
> steering people away from linking for/else and if/else too closely.
IMHO a better option would be a separate keyword, e.g. 'broken':
for x in iterable:
...
broken:
...
else:
...
And not only to make the 'else' more understandable. I found, in
a few situations, that such a 'broken' clause would be really useful,
making my code easier to read and maintain. There were some relatively
complex, parsing-related, code structures...
stopped = False
for x in iterable:
...
if condition1:
stopped = True
break
...
if contition2:
stopped = True
break
...
if contition3:
stopped = True
break
...
if stopped:
do_foo()
else:
do_bar()
It would have been nice to be able to do:
for x in iterable:
...
if condition1:
break
...
if contition2:
break
...
if contition3:
break
...
broken:
do_foo()
else:
do_bar()
Cheers.
*j
More information about the Python-ideas
mailing list