Pythonにはいくつかの特殊な変数があり、__name__
もその一種です。
Pythonにおける__name__
は、直接実行されたスクリプトに組み込まれるモジュール名が代入された変数です。
__name__
の基本的な使用例代表的な使い方はif __name__ == "__main__":
です。
Pythonのプログラムを直接実行する際に__name__
には__main__
という文字列が代入されます。
実際に見てみましょう。
sample.py
を作成し、以下を記述してみてください。
以下のコマンドで実行します。
出力結果は以下です。
これは共通で、直接実行されたスクリプトの__name__
には__main__
が入ります。したがって、Pythonスクリプトを直接実行する際には、以下のような書き方が一般化しているのです。
__name__
の別の使用例次に、他のモジュールから参照されたり、関数内で参照した場合はどうなるか見ていきましょう。
以下のように同じディレクトリ内にhoge.py
、huga.py
、そしてpiyo.py
を作って試していきます。
hoge.py
を中心にスクリプトを実行する形です。
実行してみましょう。
まず、直接実行対象のhoge.py
で最初に説明した__main__
が出力されます。
その次にhuga_func()
内の__name__
はhuga
モジュールであるため、huga
が出力されます。
クラスが含まれるpiyo.py
は、インスタンス生成で__init__
内のprint(__name__)
が出力され、その後にpiyo_func()
のprint(__name__)
が出力されています。
piyo.py
はモジュール自体がpiyo
のため、piyo
が出力されます。
__name__
の使い所単純に__name__
はモジュール名を取得できる変数ですが、使い所は== "__main__"
だけではありません。
動的にモジュールインポートしたい際によく使われるimportlib.import_module
で、動的インポート対象のモジュールによって処理を分けたいときに使う、などの使い所があります。
Pythonの特殊変数や関数はたくさんありますが、使い方を覚えておくと美しいコーディングにつながります。
デフォルトで備わっている機能に習熟して、より良いプログラミングライフを目指しましょう。