【Python】__name__ と__main__について

アイキャッチ画像
  • Pythonで見かける__name__ と__main__とは?
  • if __name__ == ‘__main__’ の使い方とは?

本記事ではこのような疑問を解決します。


Pythonモジュールをいくつか見ていると、”__name__ “や”__main__”といった表記を見かけます。

見た目からして少し特殊なものですよね。

また、この「if __name__ == ‘__main__’ 」というコードもお目にかかる機会が多いでしょう。

こちらのコードはよく”おまじない”として片付けられることが多いです。


そこで今回はPythonにおける__name__ と__main__について意味を中心にわかりやすく解説していきます。

__name__ と__main__とは?

__name__ とは実行されたファイル名(モジュール名)が自動的に代入される特殊な変数です。

自動的に代入されるモジュール名は以下の2パターンあります。

・コマンドラインから直接実行された場合
→’__main__’が代入される

・他のプログラムからインポートされた場合
→モジュール名が代入される

上記より、__main__はモジュールがコマンドラインから直接実行された場合に代入される値になります。

if __name__ == ‘__main__’ とは?

いくつかのPythonモジュールを見るいるとよくお目にかかるのが、
「if __name__ == ‘__main__’ 」というコードです。

先ほど説明した__name__ と__main__についての理解があれば、
何を表しているコードかがわかるでしょう。

つまり、if __name__ == ‘__main__’はモジュールがコマンドラインから直接実行されたかどうかを判定するコードになります。

if __name__ == ‘__main__’ を使う理由

if __name__ == ‘__main__’ の意味がわかったところで、なぜif __name__ == ‘__main__’ を使うのでしょうか?

それはインポートしたモジュール内の処理が勝手に実行されるのを防ぐためです。

というのも、Pythonではインポートされたモジュールの中身はその瞬間に実行されるようになっています。

そのため、単にインポートしただけなのに勝手にモジュールの中身が実行されると不都合が生じます。

インポートしたモジュール内の処理は好きな段階で実行したいですよね。

したがって、if __name__ == ‘__main__’ を使うことでインポートしたモジュール内の処理が勝手に実行されないようにしているのです。

まとめ

以上がPythonにおける__name__ と__main__についてです。

__name__ と__main__の意味がわかった上で、
if __name__ == ‘__main__’ の必要性が理解できたと思います。

Pythonでモジュールを作成する際はぜひ活用してみてください。

必読

フリーランスエンジニアが案件獲得方法とは?自ら営業せずに案件を獲得するには?実務経験1年未満でも大丈夫なの? 本記事ではこのような疑問を解決します。これからフリーランスエンジニアとして独立したい方は、兎にも角にも案件の獲得が急務です[…]

アイキャッチ画像