私は最近、さまざまな複合文の 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私は何を見落としていますか?