Pythonでは、スクリプトのエントリーポイントとしてmain
関数を定義することが一般的です。しかし、初学者はしばしば「なぜわざわざmain
関数を定義するのか?」と疑問に思うことがあります。この記事では、その疑問に答えるため、main
関数を定義することのメリットについて説明します。
関数の定義を後ろに書ける
Pythonでは、関数は定義した後でしか使うことができません。しかし、main
関数を使うことで、main
内で使う関数の定義を利用場所の後に書くことができます。
def main():
func_a()
def func_a():
...
if __name__ == "__main__":
main()
抽象度の高い処理の流れを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
関数をmain_old
等にリネームして新たなmain
関数を定義するといったことをすれば大幅な変更でもすばやく対応できます。
テストが書きやすい
main
関数を使わずコードをベタ書きしていると自動テストが書きづらくなります。
変数名の意図しない衝突を防げる
main
関数を使わずコードをベタ書きすると、多くの変数がグローバル変数のような扱いになってしまいます。結果として、意図しない変数名の重複によるバグの発生や、用済みデータが残ることによる無駄なメモリの使用等が起こりえます。
以上、Pythonでmain
関数を定義することのメリットについて説明しました。Pythonを学び始めた方は、ぜひmain
関数の使用を検討してみてください。