for-else

Jeffrey Barish jeff_barish at earthlink.net
Thu Mar 6 11:18:18 EST 2008


Terry Reedy wrote:

> A for-loop is equivalent to a while loop with the condition 'iterator is
> not exhausted'.  So do_else when that condition is false -- the iterator
> is exhausted.

I think that this is the most important statement in this thread.  As others
have expressed, I too found for-else surprising when I first encountered
it.  It made sense to me when I analogized for with if:

for x in range(5):
    do_something()
else:
    do_something_else()

means

do_something repeatedly when the condition (iterator not exhausted) is true
and do_something_else when the condition is not true, just as

if condition:
    do_something()
else:
    do_something_else()

means do_something once when the condition is true and do_something_else
when the condition is not true.  I find it elegant that Python does not
introduce additional keywords to deal with situations that are comparable.
-- 
Jeffrey Barish




More information about the Python-list mailing list