0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

🐍 Python初心者がつまずきがちな「if __name__ == '__main__'」を完全に理解する

0
Last updated at Posted at 2025-08-10

はじめに

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

#Python
if __name__ == '__main__':
    bake()

初心者の頃は「何これ?」「ファイル名と関係ある?」と疑問に思った方も多いはず。
この記事では、実際のコード例と実行結果をもとに、**「なぜ必要なのか」「どう動くのか」**をわかりやすく解説します。

__name__とは何か?

Pythonでは、すべての .py ファイルに name という特別な変数が自動で定義されます。
image.png

実験①:ファイルを直接実行した場合

#Python cake.py
def bake():
    print("ケーキを焼いています!")

print(f"このファイルの __name__ は: {__name__}")

if __name__ == '__main__':
    bake()

実行結果(cake.py を直接実行):

このファイルの __name__ は: __main__
ケーキを焼いています!

実験②:他のファイルから import した場合

#Python main.py
import cake

cake.bake()

実行結果(main.py を実行):

このファイルの __name__ は: cake
ケーキを焼いています!

※ cake.py の if name == 'main': の部分は実行されません!

よくある誤解

import時はファイル全体が毎回実行されるわけではないです。
image.png

トップレベルのコードとは?

関数やクラスの定義の外側にあるコードのことです。
つまり、ファイルが読み込まれたときにすぐ実行される部分です。

トップレベルのコードに含まれるもの

  • print(...) のような直接実行される文
  • if name == 'main': のような条件分岐(ただし条件が合わなければスキップされる)
  • 関数やクラスの「定義」はトップレベルにあるが、定義されるだけで実行はされない

トップレベルではないもの

  • 関数の中のコード(例:bake() の中の print(...))
  • クラスの中のメソッド
  • main.py から呼び出される cake.bake() のような関数呼び出し

理解のポイントまとめ

  • import すると、関数定義の外側(トップレベル)のコードが一度だけ実行される
  • name は「直接実行」なら 'main'、「import」ならモジュール名(例:'cake')
  • cake.bake() は関数呼び出しであり、ファイル全体を再実行するわけではない
  • 実行結果の順番は、import → 関数呼び出しの順に対応している

今後に活かす

  • 出力結果の横に「どのコードによるものか」を注釈で明記すると読者の理解が深まる
  • 「if name == 'main':」の役割と、import 時にスキップされる理由を図解するとさらに親切
0
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?