edo1z blog

プログラミングなどに関するブログです

Python3 - if __name__ == '__main__':

参考:Python - if name == 'main': の意味

コマンドラインからスクリプトファイルを指定してPythonインタプリタを起動すると、指定されたファイルは、__main__という名前のモジュールとしてPythonに読み込まれる。実行中スクリプトのモジュールの名前は、__name__という名前の変数に設定されているため、この値を参照して、ファイルがコマンドラインから実行されたのか、それともimport文でインポートされたのかを識別できる。

nameは、モジュール名で、コマンドラインから実行するとそのファイルのモジュール名は、mainになる。importすると、そのファイルのモジュール名は、hoge.pyだったらhogeになる。(importするときもimport hoge.pyじゃなくて、import hogeとする)

コードサンプル test.py

import test2

def hoge():
    test2.hoge2()

print(__name__)

if __name__ == '__main__':
    hoge()

test2.py

def hoge2():
    print(__name__)

実行

$ python test.py

結果

__main__
test2