🔖

【Python】if __name__ == "__main__" の意味と使いどころ

に公開

はじめに

Pythonのコードでよく見かけるこの一文:

if __name__ == "__main__":

最初は、

「この一文にはどんな意味があるのか?」

と疑問に感じる方も多いと思います。

本記事では、if __name__ == "__main__" の意味と使いどころを解説します。

1. __name__ とは?

Pythonでは、どんなファイルにも自動で __name__ という特別な変数が用意されています

この変数の中身は、「そのファイルがどうやって実行されたか」によって変わります。

✅ ファイルを直接実行したとき

例えば、以下のような sample.py というファイルを用意します:

# sample.py

print(__name__)

このファイルをターミナルから実行すると…

python sample.py

出力は次のようになります。

__main__

これは __name__"__main__" であることを示しています

つまり、「このファイルが直接実行された」という意味になります。

✅ 他のファイルからインポートされたとき

今度は、別のファイル(例えば main.py)から sample.py を読み込んでみましょう。

以下のような main.pysample.py というファイルを用意します。

# main.py

import sample
# sample.py

print(__name__) 

ターミナルから以下のように実行すると

python main.py

出力は次のようになります。

sample

__name__"sample" になります。

これは「このファイルは直接実行されたのではなく、他のファイルから呼び出された」という意味になります。

2. if __name__ == "__main__" の意味

上記の仕組みをふまえると、以下のようなコードは、

def main():
    print("Hello")

if __name__ == "__main__":
    main()

「このファイルが直接実行されたときだけ、main() を呼び出す」

という意味になります。

インポートされたときには main() は実行されません。

3. 用途

✅ ファイル単体でも動かしたい、かつ他のファイルからも使いたいとき

例えば、utils.py という便利関数をまとめたファイルがあったとします。

# utils.py
def add(a, b):
    return a + b

if __name__ == "__main__":
    print(add(2, 3))

このように書いておけば、

  • python utils.py を実行すると add(2, 3) の動作確認ができる
  • 他のファイルで import utils すると add() 関数だけ使える(printは実行されない)

というように、テスト用コードと本体コードを分けるのに便利です。

🔹 ターミナルから実行した場合

python utils.py

出力:

5

🔹 他のファイルからインポートした場合

# main.py
import utils

print(utils.add(10, 20))

出力:

30

おわりに

if __name__ == "__main__" は、Pythonでは非常によく使われる書き方で、
モジュールとしての再利用性を保ちつつ、テストコードも書けるというメリットがあります。

最初は少しわかりにくいかもしれませんが、
「ファイルを直接実行したときにだけ動く処理を分けて書ける」という仕組みを知っておくと、今後の開発で役立つ場面が増えるはずです。

本記事が参考になれば幸いです。

Discussion