Pythonのプログラムを見ていると、時折、if __name__=="__main__"
というコードが見受けられます。
初見では、理解できないと思いましたので、紹介します。
また、以下の記事を読んでから本記事を読むことをおススメします。
__name__とは
__name__
は、Pythonでは、重要な変数になります。
この変数には、このPythonファイルのモジュール名が文字列で入っています。
import sample とされた場合、 sample.py
内部での__name__
は” sample
“になります。
__main__とは
python sample.py
のようにPythonファイルをスクリプトとして直接実行した場合、 sample.py
の内部の __name__ 変数は "__main__"
という文字列になります。
import
で実行された場合と直接実行された場合で、__name__
関数は異なるということです。
import
で実行された場合、そのファイル名(sample.pyはsample)となり、
スクリプトとして直接実行された場合、"__main__"
となります。
したがって、 if __name__ =="__main__"
という if文を使うことで、Pythonファイルをスクリプトとして直接実行された場合のみ実行されたと判定できます。
具体例
sample_01.pyで以下のようなコードを書きます。
print("This is a python sample file.")
続いてsample_02.pyで以下ようなコードを書きます。
import sample_01
sample_02.pyを実行しましょう。
$ python sample_02.py
This is a python sample file.
では、sample_01.pyを以下のように編集します。
if __name__=="__main__":
print("This is a python sample file.")
そして、sample_02.pyを実行してみましょう。
$ python sample_02.py
importで実行されないように__name__=="__main__"
は、あるようです。
まとめ
__name__
関数は、Pythonファイルのモジュール名が文字列で入っています。
__main__
は、スクリプトとして直接実行されたことを指します。