Pythonのループはelseを持てる


このエントリーをはてなブックマークに追加

Pythonのforループやwhileループは、elseを持つことができると聞いて驚きました。例えば以下のコードは合法です。

for i in range(5):
    print("i = ", i)
else:
    print("loopは無事に終了しました")

実行例は以下です。

i =  0
i =  1
i =  2
i =  3
i =  4
loopは無事に終了しました

このようにループの後に繋げたelseは、ループが正常終了したときのみ実行されます。逆に言うと、breakやreturnでループを抜けたり、例外を発生したりしたときは実行されません。

以下のようにループの途中でbreakすると、

for i in range(5):
    print("i = ", i)
    if i == 3:
        break
else:
    print("loopは無事に終了しました")

else節の内容は実行されません。

i =  0
i =  1
i =  2
i =  3

参考