目次
if __name__ == “__main__”: とは?
pythonを勉強していると、
def main():
print("Hello World")
if __name__ == "__main__":
main()
みたいな書き方をしますよね?
僕も疑問に思いながらも、呪文なんだなーっていう解釈しかしていない時期がありました。しかし、なんとなくの理解だとモヤモヤするのでちゃんと理解もしました。
みなさんも多分の同じはずです。これを機会に理解しておきましょう。
__name__(グローバル変数)とは?
この__name__というのはグローバル変数と呼ばれるもので、
「どこから呼び出されたか?」
が格納されています。
どこから呼び出されたかは、2通り考えられると思います。
・コマンドラインから実行
・外部ファイルからインポート
コマンドラインから実行、というのは言い換えればそのファイルを直接実行したということです。
外部ファイルからインポートは、import ファイル名した際に実行されます。
サンプルで確認
サンプルで使うファイルは、
・index.py
・hello.py
index.pyは、hello.pyをインポートするだけです。
import hello
hello.pyは、グローバル変数__name__を出力する処理を実行します。
def main()
print(__name__)
main()
コマンドラインから直接実行
$ python3 hello.py
__main__
直接呼び出された際は、__main__が格納されます。
外部ファイルからインポート
$ python3 index.py
hello
helloと出力されていますが、これはhello.pyのファイル名です。
外部ファイルであるindex.pyでimportした際に、実はhello.pyが実行されているのです。
このimportした際に呼び出された際に実行されるのを防ぐために、
if __name__ == “__main__”:
で条件分岐をします。