在Python中的while或者for循环之后还可以有else子句,作用是for循环中if条件一直不满足,则最后就执行else语句。

for i in range(5):
    if i == 1:
        print \'in for\'
else:
    print \'in else\'

print \'after for-loop\'


# in for
# in else
# after for-loop

但我们发现if条件在循环的过程中成立了,最终还是执行了else语句里的内容,这是为什么呢?

好的,我们这时看下面这段程序:

for i in range(5):
    if i == 1:
        print \'in for\'
        break
else:
    print \'in else\'

print \'after for-loop\'


# in for
# after for-loop

我们在if里添加了一个break,这是因为else是在for后执行的,但只有for循环正常退出时才会执行else语句(不是由break结束循环)。而当循环是由break语句中断时,else就不被执行。

for/else等效于下面这段代码,可以类似C语言那样添加一个flag:

found = False
for i in range(5):
    if i == 1:
        found = True
        print \'in for\'
if not found:
    print \'not found\'

print \'after for-loop\'


# in for
# after for-loop

for语句相似,while语句中的else子句用法是一样的,else块在循环正常结束和循环条件不成立时执行。