Pythonで目にする“謎”の構文「if __name__ == “__main__”」とは?Pythonの「if __name__ == “__main__”」とは【前編】

「Python」のプログラミングでは、「if __name__ == “__main__”」という構文を目にすることがある。この構文が持つ役割は何か。どのような場面で用いるのか。簡単な例を挙げて解説する。

2024年03月22日 05時00分 公開
[Kevin McAleerTechTarget]

 プログラミング言語「Python」には、「if __name__ == “__main__”」という構文がある。この構文は、スクリプト(簡易プログラム)やスタンドアロンアプリケーションを実行する際のエントリーポイント(プログラムを実行し始める場所)を提供する。

 Pythonはプログラムが変数の型を自動で決定する「動的型付け」をするといった特徴を備えるため、プログラミング初心者にも親しみやすい言語だ。ただし、その構文の中には、どう解釈すればいいか分かりにくいものがある。if __name__ == “__main__”もその一つだ。

この構文を使うと何ができる? 具体的な使い方は?

 if __name__ == “__main__”を使うと、単体で実行可能なプログラムと、そのプログラムにインポートして使うモジュール(再利用可能なソースコードのまとまり)を1つのファイルにまとめて定義できる。

 以下に、if __name__ == “__main__”を使用した簡単なサンプルプログラムを示す。このプログラムは、「Hello World」という文字列を出力するためのものだ。

if __name__ == "__main__":
    print("Hello World")

 このブロック(行のまとまり)におけるif __name__ == “__main__”は、このブロックを含むファイルがスクリプトやアプリケーションとして単体で実行される場合にのみ、2行目の「print」文が処理されるように制御する役割を果たす。printは、文字列を標準出力に出力する関数だ。このサンプルプログラムを単体で実行すると、2行目の文が処理される。別のPythonプログラムからモジュールとしてこのサンプルプログラムをインポートした場合、単純にインポートしただけでは2行目は処理されない。つまり開発者は、print文をif __name__ == “__main__”ブロックの下に配置することで、プログラムが呼び出された(インポートされた)時点でprint文が実行されることを防げる。


 次回は、if __name__ == “__main__”の意味を読み解く。

TechTarget発 エンジニア虎の巻

米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。

ITmedia マーケティング新着記事

news061.png

高齢男性はレジ待ちが苦手、女性は待たないためにアプリを活用――アイリッジ調査
実店舗を持つ企業が「アプリでどのようなユーザー体験を提供すべきか」を考えるヒントが...

news193.jpg

IASがブランドセーフティーの計測を拡張 誤報に関するレポートを追加
IASは、ブランドセーフティーと適合性の計測ソリューションを拡張し、誤報とともに広告が...

news047.png

【Googleが公式見解を発表】中古ドメインを絶対に使ってはいけない理由とは?
Googleが中古ドメインの不正利用を禁止を公式に発表しました。その理由や今後の対応につ...