0
0

Pythonの「if __name__ == "__main__":」について

Last updated at Posted at 2024-01-12

最初に結論

  • if __name__ == "__main__":は、主にPythonの自作モジュールを使う際に用いられる記述です。
  • これは「モジュール本体」に記載すべきもので、モジュールの「呼び出し側」には書きません。
  • これを書いておくと、モジュール自体を単体で実行した際にのみそのコードブロックが実行されます。呼び出し側では実行されません。
  • この挙動により、モジュール単体での実行時にのみ関数を実行させる、といったことが可能となり、主にテスト時に便利です。

具体的な挙動

mymodule.py
def say_hello():
    print("Hello, world!")

if __name__ == "__main__":
    say_hello()

このように書いておくと、

  • mymodule.pyを単体で実行した際には、say_hello()が実行されます。
  • 呼び出し側では、明示的にsay_hello()と書かない限り実行されません。
  • 仮にif __name__ == "__main__":がない場合、呼び出し側ではimport文を読み込んだ段階で自動的にsay_hello()が実行されてしまいます。

name・main とは何か?

  • __name__は、Pythonファイルを実行した際に自動で割り当てられる変数です。
  • 直接実行の際には__main__が自動で格納されます。
  • 呼び出して実行した際には、呼び出し名が格納されます。
    • 例:import mymoduleのように別のスクリプトからインポートされた場合、__name__"mymodule" になります。
    • そのため、if __name__ == "__main__": ブロック内のコードは実行されない、ということになります。
0
0
0

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
0
0