『Effective Python』の続き。for/else
、while/else
ダメ絶対
www.effectivepython.com
Python 言語リファレンス — Python 3.4.2 ドキュメントを読むと、for
文やwhile
文の後にelse
節を追加できることが書いてある。
筆者は、いかにこのelse
が直感的ではないかを3段落に渡って書いている。if/else
やtry/except/else/finaly
と比べて意味合いが違うとか、初心者は混乱するなど。
私はこれまで気にしていなかったが、次のコードを見てちょっと使うのをやめようと感じた。 さて、以下のコードはどのような動作をするでしょう?
for x in []: print('For block!') else: print('For Else block!')
while False: print('While block!') else: print('While Else block!')
一応、筆者はfor/else
とwhile/else
の使いどころを説明するものの、代替案を提示して「forやwhileループ後のelseブロックは避けろ」とした。
きっと、嫌な思い出があるのだろうなあ…。