ProgrammingPython Backend/ジュニア開発者

Pythonにおけるループとbreak/continue/else演算子の動作の詳細を説明してください。ループのelseはどのように機能しますか?

Hintsage AIアシスタントで面接を突破

回答。

Pythonでは、ifの後だけでなく、forおよびwhileループの後にもelseを書くことができます。elseの本体は、ループが「通常」の方法で終了した場合—つまり、breakによってではなく—のみ実行されます。これにより、例えば、要素の検索をエレガントに実装することができます。

例:

for x in range(5): if x == 3: print('break!') break else: print('ループはbreakなしで終了しました') # 実行されません
for x in range(5): if x == 10: break else: print('ループはbreakなしで終了しました') # 実行されます

この機能は「成功なしの検索」に頻繁に使用されます:breakが起こらなければ、要素は見つからなかったことになります。

言葉遊びの質問。

ループが終了した場合、elseブロックは常に実行されますか? ループが空だった場合はどうですか?

回答: はい、breakがなければ、ループ本体に入らなかった場合でも、elseは常に実行されます:

for x in []: print('何もない') else: print('else!') # これは表示されます

このトピックの詳細を知らないことで起こる実際のエラーの例。


ストーリー

プロジェクト: ドキュメントパーサー。

問題: リスト内のキーを検索し、elseの外で「not found」フラグをセットしました。その結果、breakが発生しなかった場合に要素の検出が不正確になりました。


ストーリー

プロジェクト: ユニークトークンの生成。

問題: トークン生成のロジックはbreakによる正しい終了に依存しており、elseが誤って「特別なケース」と見なされてしまいましたが、実際には99%の実行で発動し、ユーザー認証のロジックが壊れました。


ストーリー

プロジェクト: ネットワークAPIのテストスクリプト。

問題: whileの後のelseの誤解から、breakによらない終了時にタイムアウトを処理するために使用され、タイムアウトが捕捉されず、テストで「静かな」エラーを引き起こしました。