Pythonでは、特別な名前__main__
が2つの重要な構造体で使用されます。それらは、プログラムのトップレベル環境の名前と、Pythonパッケージの__main__.py
ファイルです。
Pythonモジュールまたはパッケージがインポートされると、__name__
はモジュールの名前に設定されます。通常、これは.py
拡張子なしのPythonファイル自体の名前です。ファイルがパッケージの一部である場合、__name__
には親パッケージのパスも含まれます。
しかし、モジュールがトップレベルのコード環境で実行される場合、その__name__
は文字列'__main__'
に設定されます。__main__
は、トップレベルコードが実行される環境の名前です。”トップレベルコード”は、プログラムが必要とする他のすべてのモジュールをインポートする最初のユーザー指定のPythonモジュールです。
モジュールは、自身の__name__
を確認することで、それがトップレベル環境で実行されているかどうかを判断できます。これにより、モジュールがインポート文から初期化されていない場合にコードを条件付きで実行するための一般的なイディオムが可能になります。
if __name__ == '__main__':
# Execute when the module is not initialized from an import statement.
...
また、__main__
モジュールのファイル名を取得する方法として、以下のようなコードがあります。
import __main__
print(__main__.__file__)
ただし、__main__
が常に__file__
属性を持つわけではないことに注意が必要です。そのため、__main__
モジュールが__file__
属性を持っているかどうかを確認することが重要です。
import sys
from os import path
print(path.abspath(str(sys.modules['__main__'].__file__)))
以上がPythonの__main__
モジュールについての基本的な説明です。この情報がPythonの理解に役立つことを願っています。