2
1

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 3 years have passed since last update.

Pythonで見かける「if __name__ == '__main__':」について

Posted at

Pythonで見かけた「if _name_ == '_main__':」について意味がわからなかったので
自分なりに調べたことをメモがてら以下にまとめる。

こちらのサイトを参考にさせていただいた。
https://blog.pyq.jp/entry/Python_kaiketsu_180207

ざっくり言うと、このPythonファイルが「"Pythonファイル名".py」というふうに実行されているかを判断するらしい。

まず、「if _name__ == '_main__':」のないプログラムを考えてみる。
ーーーーーーーーーーーーーーーーーーーー
def main():
print("Hello")

main()
ーーーーーーーーーーーーーーーーーーーー
このようなhello.pyというプログラムがあった場合
$Python hello.pyとすることで「Hello」と表示することができるが、
>>>import hello.pyとしても同様に「Hello」と表示されてしまう。

そこでプログラムを以下のようにすることで、importした際のmain関数の実行を防ぐことができ
$Python hello.pyとした場合にのみ、main関数が実行される
ーーーーーーーーーーーーーーーーーーーー
def main():
print("Hello")
if _name_ == '__main_':
  main()
ーーーーーーーーーーーーーーーーーーーー

Pythonには__name__という特殊な変数があり、$Python hello.pyとすることで自動的に_name__ = '_main__'となるので
プログラムがPython hello.pyとして実行されたと判断することができるらしい。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?