__name__

__name__ は、Pythonの特別な組み込み変数(built-in variable)で、通常のプログラムの実行とモジュールのインポートの2つの異なるコンテキストで異なる値を持つことがあります。この変数は、Pythonスクリプトが直接実行されるか、他のスクリプトやプログラムからインポートされるかに応じて動作します。

以下は __name__ の主な用途と値の意味です:

  1. スクリプト直接実行時の __name__:

    • Pythonスクリプトが直接実行された場合、__name__ の値は "__main__" になります。
    • これは、スクリプトがエントリーポイントとして実行されていることを示します。つまり、そのスクリプトが実行されるときに実行されるコードブロックを指定するために使用できます。
    python
    if __name__ == "__main__": # このコードはスクリプトが直接実行された場合に実行されます main()

    このように、if __name__ == "__main__": の条件文を使うことで、スクリプトが直接実行された場合にのみ特定のコードブロックを実行することができます。

  2. モジュールとしてインポートされた時の __name__:

    • スクリプトが他のPythonスクリプトやプログラムからインポートされた場合、__name__ の値はそのモジュール名(ファイル名から拡張子を取り除いたもの)になります。
    • これは、モジュールが他のコードから再利用される場合に、特定のコードブロックが実行されないようにするのに役立ちます。

    例えば、my_module.py というファイルがモジュールとして他のスクリプトからインポートされる場合、my_module モジュール内のコードブロックは直接実行されません。しかし、my_module.py が直接実行される場合には、__name__"__main__" になり、my_module モジュール内のコードが実行されます。

__name__ の使い方により、Pythonスクリプトをモジュールとして再利用しやすくすることや、エントリーポイントとしての利用を明示的に制御することができます。