Pythonで、ある関数の戻り値が真になるまでその関数を呼びつづけるとき、どう書く?
while not foo():って書いてもいいけど
pass
while True:の方がPythonらしい書き方のような気がする。
if foo():
break
(僕がここでいう「Pythonらしさ」は、少し曖昧だけど
アルゴリズムの教科書に出てきそうな感じのこと。異論はあると思う)
Pythonにおけるオフサイドルールについて
「簡潔だ(必要な行数が少ない)から良い」
という人が居るけど、どうもそれはPythonの目指すものとは違うんじゃないかなと思う。
なぜ空ブロックを許さないのか?なぜpassが必要なのか?
それはオフサイドルールによって必然的に決まっている訳じゃない。
Pythonの言語仕様が空ブロックを許すなら以下のコードは問題ない。
while not foo():あるいは
print 'hello'
if bar():空ブロックを認めると構文解析が破綻するとかじゃない。
while not foo():
print 'hello'
簡潔さ犠牲にして、あえてpassを言語仕様に盛り込んだんだ。
一行短くするためにオフサイドルールを採用したとは思えない。
なんかPythonに関しては「的外れな支持者」も少なくない気がする。