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
と直接実行すればテストが走り、モジュールとして利用されたときにテストが行われなくて済む。