検索
特集/連載

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

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

Share
Tweet
LINE
Hatena

 プログラミング言語「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エンジニアの問題解決に役立つ情報を厳選してお届けします。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る