def main():
...
if __name__ == "__main__":
main()
関数の定義を後ろに書けるようになる
# エラーなく `func_a()` が実行できる
def main():
func_a()
def func_a():
...
if __name__ == "__main__":
main()
抽象度の高い処理の流れを main 関数で示せる
def main():
# ここを読めば、データの読み込み → 処理 → 結果の保存 をしていることはわかる
data = load_data()
result = process_data(data)
save_data(result)
def load_data():
...
def process_data(data):
...
def save_data(result):
...
if __name__ == "__main__":
main()
処理の変更や差し替えがしやすい
main 関数を定義しておくと、たとえば処理の大部分を変更する必要がある場合には、既存の main関数を main_old 等にリネームして新たな main 関数を定義するといったことをすれば大幅な変更でもすばやく対応できるようになります。
テストが書きやすい
main 関数を使わずコードをベタ書きしていると自動テストが書きづらくなります。
変数名の意図しない衝突を防げる
# 意図しない変数名の重複の例
result = fetch_data()
...
# `calculate()` の結果を表示するための `print()` を追加したが
# 間違えて `calculate()` の前に `print()` を書いてしまった
# ↓
# 本来 `NameError` が起こってすぐに気づくはずだが
# 変数 `result` を上でも使っているのでエラーにならず間違いの発見が遅れる
print(result)
result = calculate()
参考サイト
Python Tips_ Python で main 関数を定義することのメリット – Life with Python