if __name__ == ‘__main__’:が何かよく分からない。
インターネットで見つけたコードにこのようなif文が書かれているのを見たことがあるでしょうか。この記事では、Pythonのコードでよく見る「if __name__ == ‘__main__’:」について解説していきます。
Pythonの「__name__」「if __name__ == ‘__main__’:」などについて、意味や使い所について学んでみましょう!
なお、Pythonの記事については、こちらにまとめています。
「if __name__ == ‘__main__’:」とは
まずは、このif文がどのような役割を果たすのかについて解説をします。このif文では直接実行されたプログラムなのか、別のコードからimportされたものなのかについて調べています。
if文では条件による分岐を、importでは他のPythonファイルから必要な機能だけを使うことができましたね。前提となるif文とimportについてはこちらの記事をご覧ください。
if文について
importについて
このif文の下に書かれているコードは、importされているかされていないかによって動作が変わってきます。もう少し詳しく、「__name__」と「__main__」について、分けて見ていきましょう。
「__name__」とは
このif文で使われている「__name__」について解説をします。この正体はPythonのコードを実行するときに自動的に作られた変数になります。この変数には、実行しているプログラムのモジュール名が自動的に代入されます。
あとで解説をしますが、「test1.py」というファイル名をモジュールとして使うのであれば、「__name__」には、「’test1’」が代入されます。
そして、モジュール化されない場合に代入される名前こそが、「’__main__’」になります。
「’__main__’」とは
「’__main__’」についても触れておきましょう。先程も軽く解説したように、Pythonのコードを直接実行したとき、そのコードは「’__main__’」という名前のモジュール(コード)として認識されます。
ここで「if __name__ == ‘__main__’:」についてもう一度読み解いてみると、
- if __name__ == ‘__main__’:
このif文が書かれているコードがモジュールとして他のコードから実行された時、「__name__」にはモジュールの名前が入る。
このif文が書かれているコードが直接のプログラムとして実行され時、「__name__」には「’__main__’」という名前が入る。
そしてこのif文が成立するのは「__name__」という変数が「’__main__’」になったとき、つまり直接実行された時。
ということになります。ちなみにダブルクォーテーションとシングルクォーテーションは文字列を表すときに使われて、それぞれに違いはありません。
「if __name__ == ‘__main__’:」の使い所
このif文についてはなんとなく分かって頂けたでしょうか?ここで具体的な例を出して、使われる理由を見ていきましょう。例えば、モジュールを作っているときに簡単なテストをしたいと思うことがよくあります。
そこで、デバッグ用の値を表示させるプログラムをこのif文の下に書けば、直接実行されたときだけ確認をすることができます。他のコードからimportされたときは表示されません。こちらのコードをご覧ください。
test1.py
if __name__ == '__main__': print("This is script.") def hello(): print("This is module.")
test2.py
import test1 test1.hello()
実行結果(test1.py)
This is script.
実行結果(test2.py)
This is module.
このように実行してほしいコードと実行してほしくないコードを、importされたときとされていないときで分けることができます。
まとめ
今回は「if __name__ == ‘__main__’:」について解説をしてきました。
- ファイルを直接実行する場合はTrueになって実行される。
- importで実行された場合はFalseになって実行されない。
ということを覚えておきましょう。もしまたこのif文の意味がわからなくなってしまった場合は、ぜひこの記事を読んでみてください!
なお、今Pythonを学習している方は以下の記事もどうぞ。
はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。
復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。
【Python 入門完全攻略ガイド】