__main__について

mainについて

if __name__ = '__main__':
    foo()

このif文はなんなのかというと、実行した時に関係がある。

nameとは

__name__は実行中のスクリプトのモジュールの名前である。 この値を参照することで、ファイルがコマンドラインから実行されたのか、import文でインポートされたのかがわかる。

コマンドラインからPythonインタプリタを起動すると、指定されたファイルは、__main__という名前のモジュールとしてPythonに読み込まれる。

どう使う?

例えば、user.pymain.pyからimportして使用するモジュールだけれども、user.py単体でもテストしたい。

そんな時に、user.pyif __name__ = '__main__':を加えることで、テスト項目を追加することができる。 テスト項目を追加した後は、トップレベルでuser.pyを実行すればテストが実行できるというわけだ。