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

科学・テクノロジー

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

一見すると、C言語などのmain関数と同じ役割のコードに思えますが、そもそもPythonにはmain関数が不要ということもあり、役割が大きく異なります。

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

スポンサーリンク

 「__name__」とは?

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

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

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

◆サンプルプログラム:

import random

print(random.__name__)

◆実行結果:

random

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

※importについて詳しく知りたい方は、以下の記事を参考にしてください。

404 NOT FOUND | webstation plus
人生をエンジョイ&クリエイティブにしよう

ただし、「__name__」そのものを使う場合は、作成したPythonプログラムをファイルとして保存し(例えば「test.py」)、スクリプトとして実行した場合(例えば「python test.py」として実行した場合)にのみ、「__name__」に「’__main__’」という文字列が格納されます。

「’__main__’」とは?

つまり、「if __name__ == ‘__main__’」は、このプログラムがスクリプトとして実行されたかどうかを判定するコードなんですよね。

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

◆サンプルプログラム:

import random

print(random.__name__)

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

◆実行結果:

random
main

スクリプトとして実行したので、print(‘main’)処理が実行されました。

また、今回のサンプルプログラムをみてわかるように、「if __name__ == ‘__main__’」は、C言語のmain関数のように優先的に実行されるわけではありません。単純な「if文」の処理だからです。

※if文について詳しく知りたい方は、以下の記事を参考にしてください。

404 NOT FOUND | webstation plus
人生をエンジョイ&クリエイティブにしよう

「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をコピーしました