チラ裏備忘録

情報整理

if __name__ == "__main__"の意味

Pythonでよく見る

if __name__ == "__main__":
    main()

という表記に関して,とてもわかりやすく書かれている記事があったので,自分用にメモさせていただいた.(記事書かずにリンク先読めばよくね?)
Pythonのif __name__ == "__main__" とは何ですか?への回答 - Python学習チャンネル by PyQ

説明

わざわざ上記のような書き方でmain関数を実行する意味は,
importされた時に関数が勝手に実行されないようにするためである.

以下のようなsayHello.pyというファイルが存在するとする.

# sayHello.py

def main():
    print("Hello!")

if __name__ == "__main__":
    main()

このファイルを…

インポート時(import sayHello.py)

__name__は,"sayHello"という文字列
→ main関数は実行されない

コマンドラインから実行した時($ python3 hello.py)

__name__は,"__main__"という文字列
→ if文がTrueになるので,main関数が実行される

つまり,__name__という特殊な変数がimport時とコマンドラインから直接実行した場合で異なることを利用している.


もし仮にsayHello.pyの中身が

# sayHello.py

def main():
    print("Hello!")

main()

のようにif文を除いた場合,import時もmain関数が実行されてしまう.