[Python-ideas] for/else syntax

Gerald Britton gerald.britton at gmail.com
Sat Oct 3 17:29:44 CEST 2009


More completely:  The else clause is useful when the for-loop is
expected to _not_ exit normally, which could be by break, return or
raise.  So:

for something in somewhere:
  # do something
  if some_condition:
    break
  elif some_other_condition:
    return
  elif some_exceptional_condition:
    raise SomeException
else:
   #only execute this if the for loop falls through

So the else clause will be skipped in all three early exits from the
for-loop, but would run if the loop fell-through or never executed.
This is useful since the alternative usually involves setting some
flag before the loop and again in the body of the loop and the n
testing it afterwards -- a construct I, for one, really don't like.

On Sat, Oct 3, 2009 at 11:17 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:
> Ron Adam wrote:
>> How about this?
>>
>>    try:
>>       for x in xs:
>>           foo()
>>       esle:
>>           Print "foo didn't raise an exception."
>>    except:
>>       print "foo riased an exception"
>>
>> Using exceptions for flow control is very common in python.
>
> The else is adding no value here. That example would be better written as:
>
>   try:
>      for x in xs:
>          foo()
>      print "foo didn't raise an exception."
>   except:
>      print "foo riased an exception"
>
>> Or this:
>>
>>    for x in xs:
>>        y = foo()
>>        if y is True:
>>           return
>>    else:
>>        Print "y was never True"
>>
>> This is perfectly acceptable in my opinion.
>
> Again, using else here is redundant and misleading. The code is clearer
> if it is left out entirely:
>
>   for x in xs:
>       y = foo()
>       if y is True:
>          return
>   print "y was never True"
>
> The *only* time an else clause is a better alternative to just writing
> the code after the loop is when there is a break statement present that
> may skip over it.
>
> Cheers,
> Nick.
>
> --
> Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
> ---------------------------------------------------------------
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
>



-- 
Gerald Britton



More information about the Python-ideas mailing list