1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

if __name__ == '__main__':とは

Last updated at Posted at 2017-09-05

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

if __name__ == '__main__':
   main()

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

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

__main__

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

__name__

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

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

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

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

print(vars())

を実行したら

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

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

1
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?