Pythonの「if __name__ == “__main__”」とは【中編】
Pythonの謎構文「if __name__ == “__main__”」には何の意味があるのか
「if __name__ == “__main__”」という構文は、「Python」のプログラミングでしばしば目にする構文だ。この構文が意味するところを、例を挙げながら説明する。
プログラミング初心者にとって「Python」は、文法や機能などの面から親しみやすいプログラミング言語だ。Pythonについて学ぶ中で、開発者は「if __name__ == “__main__”」という構文を目にする機会がある。何をするためのものなのか一見分かりづらいこの構文は、何を意味するのか。以下で例を使いながら、この構文を読み解いていこう。
if __name__ == “__main__”とはどういう意味なのか
併せて読みたいお薦め記事
連載:Pythonの「if __name__ == “__main__”」とは
Pythonについて学ぶ
「__name__」は、Pythonのランタイム(実行環境)が管理する特別な変数だ。Pythonプログラム実行時、インタープリタ(プログラムの実行時にソースコードを1行ずつ解釈して実行するソフトウェア)は__name__をはじめとする幾つかの変数に値を格納する。__name__は、状況によって以下の2通りの値を持つ。
- Pythonプログラムがスタンドアロンアプリケーションとして単体で実行される場合、__name__の値は「__main__」になる
- Pythonプログラムがモジュールとしてインポートされる場合、__name__はモジュールの名前になる
すなわちif __name__ == “__main__”という条件文は、Pythonプログラムがスタンドアロンアプリケーションとして実行されたのか、モジュールとしてインポートされたのかをインタープリタが判断するためにある。
例で見る__name__の違い
以下の2つのPythonプログラムは、__name__変数の動作の違いを示すものだ。
1つ目の「helper.py」は、このプログラムを単体で実行する場合と、モジュールとしてインポートされる場合で動作が異なることを示すサンプルプログラムだ。「print」は、標準出力二文字列を出力する関数だ。
print("__name__ in helper.py: " + __name__)
Pythonプログラムを実行するための「py」コマンドを使って、このプログラムを単体で実行すると、出力は以下のようになる。
__name__ in helper.py: __main__
2つ目の「app.py」は、helper.pyファイルを「helper」モジュールとしてインポートし、プログラム本体の__name__を出力するサンプルプログラムだ。
import helper
print("__name__ in app.py: " + __name__)
pyコマンドを使ってapp.pyを実行すると、出力は以下のようになる。
__name__ in helper.py: helper
__name__ in app.py: __main__
この出力から、呼び出した先のhelper.pyファイルでは__name__にモジュール名「helper」が格納されており、app.pyの__name__には「__main__」が格納されていることが分かる。
もし両プログラムのprint文が、if __name__ == “__main__”の条件が真のときに実行されるブロック(ソースコードのまとまり)にある場合、helper.pyファイルのprint文は実行されない。具体的には、helper.pyが以下の通りであることを考える。
if __name__ == "__main__":
print("__name__ in helper.py: " + __name__)
app.pyは以下の通りだと仮定しよう。
import helper
if __name__ == "__main__":
print("__name__ in app.py: " + __name__)
このときapp.pyの実行結果は以下のように、app.pyのprint文の出力のみになる。helper.pyのprint文は、helper.pyを単体で実行したときにしか呼び出されないからだ。
__name__ in app.py: __main__
次回は、より具体的なサンプルプログラムを使ってif __name__ == “__main__”の用例を解説する。
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
2
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
5
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
6
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
7
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
-
10
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー