【Python】if __name__ == ‘__main__’:の意味と使い方を簡単に紹介

PC関連

 Pythonを勉強していると、「if __name__ == ‘__main__’:」という謎のコードに出会うことがあります。

 実はこれ。パッとみると他のプログラミング言語におけるmain関数と同じ役割のコードのように思えますが、そもそもPythonにはmain関数が不要ということもあり、役割が大きく異なります。

 そこで今回は、「if __name__ == ‘__main__’:」の意味と使い方を簡単に紹介します。




スポンサーリンク

 「__name__」とは?

 まずは、「__name__」について簡単に説明します。

 「__name__」とは、モジュールをimportしたときに、モジュール名が代入される変数のことです。

 次のサンプルプログラムをみてください。

◆サンプルプログラム:

import random

print(random.__name__)

◆実行結果:

random

 randomモジュールをインポートして、「__name__」変数に格納されている値を出力すると、’random’という文字列が格納されていることがわかりますよね。

 importについて知りたい方は、以下のエントリを参考にしてください。

 ただし、モジュールとしてインポートするのではなく、ファイルを直接スクリプトとして実行した場合、「__name__」には、「’__main__’」という文字列が格納されます。

スポンサーリンク

 「’__main__’」とは?

 というわけで、「’__main__’」とは、スクリプトとして直接実行したときに、「__name__」に入力される文字列のことです。

 つまり、「if __name__ == ‘__main__’」は、このプログラムが直接スクリプトとして実行されたときに、以下の処理を実行することを宣言しているんですよね。

 次のサンプルプログラムをみてください。

◆サンプルプログラム:

import random

print(random.__name__)

if __name__ == '__main__':
    print('main')

◆実行結果:

random
main

 直接スクリプトとして実行したので、print(‘main’)処理が実行されていることがわかりますよね。

 また、「if __name__ == ‘__main__’」は、C言語のmain関数のように優先的に実行されることもありません。単純な「if文」の処理だからです。

 if文について知りたい方は、以下のエントリを参考にしてください。

スポンサーリンク

 「if __name__ == ‘__main__’:」の使い方

 では、どんなときに「if __name__ == ‘__main__’:」が必要になるのでしょうか。

 基本的には、直接スクリプトとして実行したときにだけ、デバッグしたいコードを書くことが多いです。

 次のサンプルプログラムをみてください。

◆main_test1:

import random

def test_print():
    print("Hello World")

print(random.__name__)

if __name__ == '__main__':
    print('main')

◆main_test2:

import main_test1

main_test.test_print()

◆実行結果(main_test1.py):

random
main

◆実行結果(main_test2.py):

random
Hello World

 main_test1.pyを実行したときは、「if __name__ == ‘__main__’:」の下にある処理「print(‘main’)」が実行されていますが、main_test2.pyからモジュールとしてimportしたときは、実行されていませんよね。

 このように、スクリプトとして実行したときにだけ、実行したいコードを「if __name__ == ‘__main__’:」の下に書くことでデバッグがしやすくなります。

 最後に

 今回は、Pythonの「if __name__ == ‘__main__’:」の意味と使い方を簡単に紹介してきました。

 主にデバッグ用途として使われる機能ですが、必要になることもあると思うので、ぜひ習得してください。

コメント

タイトルとURLをコピーしました