
Pythonのスクリプトでよく見かけるif __name__ == "__main__":という記述は、一見すると少し不思議に感じるかもしれません。これはPythonプログラムが「どのように実行されているか」を判断するための大切な仕組みです。このブロックを理解することで、より整理されたコードを書くことができるようになります。
if __name__ == "__main__": の意味と役割
このコードブロックは、「そのPythonスクリプトが直接実行されたときだけ特定の処理を行う」という目的で使われます。Pythonファイルは、直接実行されることもあれば、別のファイルからモジュールとしてインポートされて利用されることもあります。if __name__ == "__main__":はその違いを判別します。
- 直接実行された場合:
__name__という特殊変数には"__main__"という文字列が代入されます。 - モジュールとしてインポートされた場合:
__name__にはそのモジュール名(ファイル名から.pyを除いたもの)が代入されます。
具体的な使い方を見てみましょう。sample_script.pyというファイルを作成します。
# sample_script.py
def say_hello():
print("こんにちは!")
def main():
print("スクリプトが直接実行されました。")
say_hello()
if __name__ == "__main__":
main()
else:
print(f"モジュール '{__name__}' としてインポートされました。")
print("この行は常に実行されます。")このファイルを直接実行してみます。
python sample_script.py出力結果:
スクリプトが直接実行されました。
こんにちは!
この行は常に実行されます。次に、このファイルを別のスクリプトからインポートして使ってみます。another_script.pyというファイルを作成します。
# another_script.py
import sample_script
print("別のスクリプトからの呼び出しです。")
sample_script.say_hello()このファイルを直接実行します。
python another_script.py出力結果:
モジュール 'sample_script' としてインポートされました。
この行は常に実行されます。
別のスクリプトからの呼び出しです。
こんにちは!ご覧のように、if __name__ == "__main__":のブロック内のコード(main()関数の呼び出し)は、直接実行された場合のみ動いていることがわかります。
みーちゃんのワンポイント
このif __name__ == "__main__":という書き方は、Pythonプログラミングにおける「お作法」のようなものです。これにより、テストコードや初期設定など、そのファイルが単体で動作するときにだけ実行したい処理を、他のファイルからインポートされた場合に実行されるロジックと明確に分離できるため、コードの再利用性や保守性が大きく向上します。

