今まで知らなかったんですが、Pythonだとfor〜elseが使えます
elseブロックが処理されるのは、breakされることなく、ループ処理が終了した後です
for i in 10: if i == 0: break else: print("foo")
この場合、breakでループを抜けるので、elseブロックは処理されません
以下の例ではbreakされることはないのでelseが処理され、barとprintされます
for i in range(10): if i == 10: break else: print("bar") # => bar
使い所
forを使ってリストを走査して、目的の値を見つけたらbreakする。見つかったかどうかで後続に処理分岐がある、そんなケースで使えそうです。
def contain_private_entry(entries): for e in entries: if e.is_private(): print "list contains an private entry" break else: print "list does not contain an private_entry"
個人的感想
とはいえ、あまり普及している構文とはいえない(と思う。ひょっとして常識っすか?)と思うので、これみよがしに多用するのは避けたほうがいいのかなーと。
というかfor〜finallyのほうがいいんじゃないかなとも思ったんですが、それはそれでjava慣れしている人からしたら、breakされようが絶対実行される、誤解されそう