Pythonの__main__
は、Pythonのスクリプトで重要な役割を果たす特殊なメソッドです。これは、スクリプトが直接実行された時だけに実行される部分を定義します。
Python __main__のメリット
__main__
を活用すると、各関数やクラスの独立したテストが容易になります。また、main
関数内で変数を定義することで、グローバルスコープでの変数の衝突を防げます。
def main():
var = "This is a local variable in main function."
print(var)
if __name__ == "__main__":
main()
この例では、変数var
はmain
関数のローカルスコープ内でのみ存在します。これにより、同じ名前の変数が別の場所で定義されていても、main
関数内のvar
と衝突することはありません。
main.pyとは何なのか?
__main__.py
ファイルは、Pythonパッケージを実行したときに呼び出される特別なファイルです。つまり、「python -m パッケージ名」を実行するとそのパッケージの__main__.py
が呼ばれます。
# __main__.py
def main():
print("ここから始まるよ!!")
if __name__ == "__main__":
main()
上記のif __name__ == "__main__":
って何してるの?という場合は、__main__.py
とは何なのか?という疑問が解消されるでしょう。
main.pyから他のファイルを読み込むためには?
__main__.py
から他のファイルを読み込むためには、以下のように実行します。
# __main__.py
import subprocess
import os
from pathlib import Path
def main():
current_directory = Path(__file__).resolve().parent
module_example_path = os.path.join(current_directory, "module_example.py")
subprocess.run(["python", module_example_path], check=True)
if __name__ == "__main__":
main()
このコードでは、Path(__file__).resolve().parent
でディレクトリパスを取得し、os.path.join()
を使ってmodule_example.py
のフルパスを構築しています。そして、subprocess.run()
を使用してmodule_example.py
を実行しています。
以上がPythonの__main__
についての基本的な説明です。この情報がPythonの理解に役立つことを願っています。