Pythonを勉強していると出てくるコイツ→「if __name__ == ‘__main__’:」って何者!?




「Pythonであれってどうやるんだろ、ちょっとググってみるか」

Pythonの勉強を始めて「メール送信てどうやるんだろ?」とか「CSV出力ってどうやればいいんだろ?」って時にとりあえずググるんですが、サンプルプログラムを紹介してくださっているサイトを見てみると決まって「if __name__ == ‘__main__’:」の記述があります。ほかの言語ではあまり見慣れない記述ですよね?

ソースコードコピペ職人の私は毎回思うわけです「if __name__ == ‘__main__’:ってなんだ…」と。そこで今回疑問を解決すべくざっくり調べてきました!

 

「if __name__ == ‘__main__’:」とは

「__name__」はPythonのプログラムを実行したときに自動で生成されます。そして「__name__」には実行しているスクリプトのモジュール名が代入されます。さらに言うと、Pythonスクリプトを直接実行した際のモジュール名は「__main__」です。ここまでくればなんとなく分かってきましたよね!ん?わからない?では次のコードをご覧ください。

 

これは「if __name__ == ‘__main__’:」を理解するためのごくシンプルなコードです。では起動してみましょう。

「__name__」に「__main__」が代入されていることがわかります。

 

では次のコードではどうでしょうか。

このコードでは「ImportModule.py」というスクリプトからさきほどの「NameMain.py」をインポートしています。そしてそれぞれの所有する「__name__」の中身を出力します。では起動してみましょう。

直接起動した「ImportModule.py」の持つ「__name__」の中身はやはり「__main__」です。しかしインポートした「NameMain.py」が持つ「__name__」の中身は「NameMain」、つまりモジュール名となっています。もう分かりましたね。

「if __name__ == ‘__main__’:」では、そのスクリプトが直接起動されたかどうかを判定しているのです。したがって「if __name__ == ‘__main__’:」以下の処理は、Pythonスクリプトを直接起動した場合にのみ実行されるということです。

「モジュールを作成していて、テストの段階である変数の中身を出力して確認したい。」といった場合に活用できますね!




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です