私は最近、さまざまな複合文の else 句を処理する Python の方法に一貫性がないように思われることに遭遇しました。Python は非常によく設計されているため、適切な説明があると確信していますが、思いつきません。
次の点を考慮してください。
if condition:
do_something()
else:
do_something_else()
ここでは、期待どおりに false のdo_something_else()
場合にのみ実行されます。condition
同様に、
try:
do_something()
except someException:
pass:
else:
do_something_else()
finally:
cleanup()
do_something_else()
例外が発生しなかった場合にのみ実行されます。
ただし、 for または while ループでは、内容が実行されたかどうかに関係なく、else 句が常に実行さfor/while block
れます。
for i in some_iterator:
print(i)
else:
print("Iterator is empty!")
私が言うsome_iterator = []
かsome_iterator = [1,2,3]
. while-else
句で同じ動作。これらの場合のelse
ように振る舞うように私には思えます。finally
私は何を見落としていますか?