2024年6月24日月曜日

Python コードにおける if __name__ == "__main__": の解説

 

Python コードにおける if __name__ == "__main__": の解説

if __name__ == "__main__": は、Python でよく見かける条件分岐構文です。一見複雑そうに見えますが、実はとてもシンプルな役割を担っています。

この構文の役割

  • スクリプトとして直接実行された場合のみ、その後に続くコードを実行する
  • モジュールとしてインポートされた場合は、その後に続くコードを実行しない

もう少し詳しく説明します

Python ファイルを実行する場合、2 つの方法があります。

  1. スクリプトとして直接実行

    • python ファイル名.py のようにコマンドラインから実行
    • ダブルクリックなどでファイルを開く
  2. モジュールとしてインポート

    • import ファイル名 のように他の Python ファイルから読み込む

if __name__ == "__main__": は、この実行方法を区別するために使用されます。

  • スクリプトとして直接実行された場合、__name__"__main__" に設定されます。
  • モジュールとしてインポートされた場合、__name__ はインポートされたモジュールの名前になります。

つまり、この構文は __name__"__main__" であるかどうかを確認し、スクリプトとして直接実行された場合のみその後に続くコードを実行するのです。

Python
def main():
  # この関数は、スクリプトとして直接実行された場合のみ実行されます
  print("スクリプトとして実行されました")

if __name__ == "__main__":
  main()

この例では、main() 関数は if __name__ == "__main__": 内に書かれているため、スクリプトとして直接実行された場合のみ出力されます。一方、モジュールとしてインポートされた場合は、この関数は実行されません。

まとめ

  • if __name__ == "__main__": は、スクリプトとして直接実行された場合のみその後に続くコードを実行するための構文です。
  • モジュールとしてインポートされた場合は、この構文内にあるコードは実行されません。
  • この構文は、テストコードを記述したり、モジュールをコマンドラインツールとして利用できるようにしたりする際に役立ちます。

参考情報