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 マーケティング新着記事

news165.jpg

GoogleのBIツールからLINEにノーコードでデータ連携 primeNumberが「trocco action for Looker」を提供
primeNumberが「trocco action」の提供を開始。第一弾としてGoogleのBIツール「Looker」...

news145.jpg

女子スポーツが生み出す収益は2024年に10億ドル以上 広告主や大手広告代理店も本気に
WPP傘下の大手メディアエージェンシーGroupMは、AdidasやUnileverなどのクライアントの支...

news011.png

「ECプラットフォーム」売れ筋TOP10(2024年4月)
今週は、ECプラットフォーム製品(ECサイト構築ツール)の国内売れ筋TOP10を紹介します。