Else clause for Python's for loop

・1 min read

Photo by Kelly Sikkema on Unsplash

Not everyone knows, but there is an "else" clause for For loops.
I often see this:

did_something = False
for element in elements:
    if element.something:
        do_something()
        did_something = True
        break

if not did_something:
    do_something_else()

But it should be like this:

for element in elements:
    if element.something:
        do_something()
        break
else:
    do_something_else()

Else clause executes only if the for loop exits naturally, without any break statements. That simple.

DISCUSS (3)
 

Kind of cool, but I think it would be more readable to separate the loop into its own function, returning true if element.something and returning false otherwise after looping thru. It would be much less confusing to look at, IMO.

 

It's no intuitive to me. I need to check documentation again every time encountered this to understand what it supposed to mean, which is a bad sign for language feature. Imagine having to check docs every time you encounter if ... else.

Jinja also has for ... else construct but the else will be executed if the loop not executed, like when the list is empty. This is intuitive to me, as it similar to how if ... else work. Either the primary block executed, or the else.

 

I use this feature all the time. My editor template for python's for block has an else clause that calls my log package. My coding style calls for loops to used if their coded

Classic DEV Post from Sep 20 '18

Explain JavaScript Promises like I am five.

I am starting to hate JavaScript. Before I blow my head with a gun, someone, pl...

A coder.

Where the wild code grows

Sign up (for free)