Machine Morning

機械学習やWebについて学んだことを記録しています。

Pythonのif __name__ == "__main__":とは

if __name__ == "__main__":

__name__はモジュールの名前が入っている特殊な変数で、通常import hogeをしてモジュールを取り込むと、そのモジュールの__name__hogeとなる。

例えば、

import numpy as np

print(np.__name__)

>>> numpy

しかし、python hoge.pyを実行した場合、hoge.pyの中での__name____main__となる。 したがって、

if __name__ == "__main__":

は、モジュールとして取り込んだ場合、__name__はモージュル名となり、直接スクリプトファイルをpython hoge.pyとして実行した場合は、__name____main__:となる。if __name__ == "__main__":Trueなら直接python hoge.pyの形で実行され、Falseならモジュールとして読み込まれたことを判定している。

なぜ、いつ使うのか

Pythonはモジュールとして読み込んだファイルは1行目から最後の行まで実行される。実用例としてモジュールのテストコードを if __name__ == "__main__":の中に書いておけば、python hoge.pyと直接実行すればテストが走り、モジュールとして利用されたときにテストが行われなくて済む。