よく見る「if __name__ == ‘__main__’」って何?意味と用途を解説

Pythonサンプルコードを見ていると「if __name__ == ‘__main__’」と記述されていることがよくありますよね?

意味が分からないと、その時点でコード解読離脱してしまいます。

本記事では、この構文が何を意味し、どんなときに使うのかを解説します。

こんな人におすすめ

Python学習を始めたばかりの人

目次

if __name__ == ‘__main__’の意味と用途

if __name__ == ‘__main__’の意味は、もしPythonコードが直接実行されたときは以降のコードを処理し、モジュールとして呼び出されたときは処理しないです。

用途は、モジュールを呼び出したときに、勝手に処理が実行されることを防ぐことです。また、モジュールの単体テスト用としても使われます。コードを直接実行したときと、モジュールとして他のコードから呼び出されたときの処理を分けることでモジュールの単体テストを可能とします。

モジュールの単体テスト用ですから、Pythonコードが1ファイルの場合は、この構文は必要ありません。

次項では、Pythonコードが直接実行されたときのみ処理する仕組みを解説します。

__name__変数とは

__name__変数とは、モジュール名を返す特別な変数です。importで他のコードから呼び出された場合は、__name__はファイル名となります。一方、コードを直接実行した場合は、__name__はファイル名となります。

サンプルプログラムで確認していきましょう。

モジュール「module.py」とメインコード「main.py」を用意しました。

def func():
    return __name__

if __name__ == '__main__':
    print('__name__ = ' + func())
import module

print('__name__ = ' + module.func())

それぞれのファイルを実行してみますと下表のようになったのではないでしょうか?

実行ファイルmodule.pymain.py
__name____main__module

main.pyからmodule.pyをimportしたときは、”if name == ‘main’:” 以降の処理が実行されないのがお分かりですね。

まとめ

Pythonサンプルコードでよく見る「if __name__ == ‘__main__’」の意味と用途について解説しました。

意味

  • もしPythonコードが直接実行されたときは以降のコードを処理し、モジュールとして呼び出されたときは処理しない

用途

  • モジュールを呼び出したときに、勝手に処理が実行されることを防ぐ
  • モジュールの単体テスト用

今回の記事が皆さんのPython学習に役立つなら幸いです。

Python独学が大変な方は、書籍やスクールを活用するのも手です。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

大学で機械工学を学んだ後、製造業で働く40代の会社員です。
IT系、電気系を学んでこなかった機械系人間が、ゲーム制作、電子工作に奮闘してます。
極力低コストでものづくりを楽しむのがモットー。

目次