if __name__ == '__main__':とは


スクリプト

chainerを少しいじり始めてから気になったことがあって、
ファイルの一番下に

if __name__ == '__main__':
   main()

というのがあって
なんでこんな風に関数を呼び出して実装しているのかなと思ったら、
Pythonに於いて

コマンドプラインからPythonスクリプトファイルを選択してPythonインタプリタを起動して実行すると、
指定されたファイルは

__main__

というモジュールとして読み込まれる。
実行中のスクリプトファイルのモジュール名は

__name__

という名前の変数に設定されていて、これを参照した時にファイルがコマンドラインから実行されたのか、それともimport文から読み込まれて実行されたのかの判断ができるようになっている。

だからトップレベルファイルとして選択された時のみ呼び出されるから他のモジュールから呼び出された時に実行されない。

結論

ファイル内のクラスやら関数やらを使い回すのに便利になる。

追記

ファイル内のmoduleがどうなっているかの確認で

print(vars())

を実行したら

..., '__name__': '__main__',......,
'np': <module 'numpy' from '/Users/~~~/numpy/__init__.py'>,...

みたいに色々と見えました。