if __name__ == ‘__main__’:

今回はたまに見かけるあのコードとしてif __name__ == '__main__':を紹介します。

__name__

まずif文の条件式に書かれている__name__について、これはPython の特殊なグローバル変数の1つです。

  • 他のファイルからインポートされたときname は''空になります。
  • ファイル自体がpython(またはpython3)コマンドでスクリプトとして実行されたときnameの値は'__main__'になります。

このように、直接ファイルを実行した場合と、インポートで呼び出された時の結果が変わります。

実践して確認してみましょう

# if __name__ == "__main__":を使わないパターン
# 以下を file1.py に記載しましょう。

print(f"__name__の中身は{__name__}です")

def sample():
    print("サンプル関数が実行されました。")

sample()
# if __name__ == "__main__":を使うパターン
# 以下を file2.py に記載しましょう。

print(f"__name__の中身は{__name__}です")

def sample():
    print("サンプル関数が実行されました。")

if __name__ == "__main__":
    sample()

以上の2ファイルを作成した後、

  1. ターミナルから各ファイルを実行した結果と
  2. 対話モードで import文としてそれぞれをインポートした結果

を比較してみましょう。結果が異なることが確認できると思います。このようにif __name__ == '__main__':では __name__ の特性を活かして、該当ファイルが直接実行された際にだけ実行したい処理を書く場合に使用されます。