auの日記

プログラミング初心者の日記。(auはハンドルネームです)

今更コマンドラインから呼び出されたか判定する「__name__」について調べてみた

auです。

Pythonのコードをみていると、頻繁に

if __name__ = '__main__'

という文を見かけます。そういえばこれってなんだ・・・という状態だったので調べてみました。

参考になった記事
azuuun-memorandum.hatenablog.com

__name__とは

__name__は、コマンドライン(ターミナル)でそのファイルが呼ばれたのか(例: python main.py)、ファイルからimportされたのか(例: import test)を判定する変数のこと

run用のファイルに記述されてることが多いと思っていたけどそういうことだったのか。

他のファイルでも、フローを確かめるように書くことで、デバッグのようなこともできそうですね!



__name__は、Python側が用意してくれている変数で、宣言しなくても大丈夫です。

コマンドラインから呼び出された場合は

__name__ = "__main__"

となり、importでモジュールとして呼び出された場合は

__name__ = "ファイル名"

となります。

コードっぽく書くと

import test(test.pyのファイルをimportしている)

if コマンドラインから呼び出された場合:
  __name__ = "__main__"
else if モジュールとしてimportされた場合:
  __name__ = "test"