[Python-ideas] for/else syntax

Steven D'Aprano steve at pearwood.info
Fri Oct 2 05:07:25 CEST 2009


On Thu, 1 Oct 2009 09:00:21 pm Antti Rasinen wrote:

> To add further insult to the naming injury, the else branch suffers
> from the fact that 99.9% of the time, the for-loop contains an if:

Really? You've done a statistically significant survey of code in the 
wild and come to a figure accurate to one part in a thousand? Not just 
plucked a number straight out of thin air?

In my code, the figure is more like 20-40%. Choosing one representative 
module at random, only one in three for-loops include an if inside the 
loop. And when I use for...else, it's closer to 10%.


> for x in xs:
>     if cond(x):
>         break
>     # stuff
> else:
>     # more stuff
>
> My code pattern matching algorithm reads that as an indentation
> error. An else matches if so many times more often that decoding
> for..else requires unnecessary effort.



But then there are these:

for x in xs:
    if cond(x):
        process()
    else:
        process_differently()
else:
   do_something_else()


for x in xs:
    process()
else:
   do_something_else()


They don't look anything like an indentation error to me.



-- 
Steven D'Aprano



More information about the Python-ideas mailing list