DEV Community

Cover image for Else clause for Python's for loop
Maria Boldyreva
Maria Boldyreva

Posted on

Else clause for Python's for loop

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()
Enter fullscreen mode Exit fullscreen mode

But it should be like this:

for element in elements:
    if element.something:
        do_something()
        break
else:
    do_something_else()
Enter fullscreen mode Exit fullscreen mode

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

Discussion (3)

Collapse
bl41r profile image
David Smith • Edited on

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.

Collapse
k4ml profile image
Kamal Mustafa

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.