「if__name__==’__main__’:」の意味(参考サイト・ほぼ抜粋:「if__name__==’__main__’:」について – Takuya Miyashita , Python – if __name__ == ‘__main__’:の意味 – ざっくりん雑記 )
「if__name__==’__main__’:」内は,main文として扱う時だけ実行する.これの外にある文は,importするだけでも実行されてしまうので注意.
例として以下のようなname.pyがあるとする.
# def
def test():
print('main文で実行したときのみ表示されます')
# 1.importのみでも実行される
print('importのみでも表示されます')
# 2.main文として扱うときのみ実行される
if __name__ == '__main__':
test()
これをpython name.pyで実行すると・・・
python name.py
importのみでも表示されます
main文で実行したときのみ表示されます
と実行される.一方でname.pyをimportするだけのコードname2.pyを用意すると・・・
python name2.py
importのみでも表示されます
となる.
まとめると__name__属性は,
- モジュール作成と同時に自動的に与えられて以下の設定が行われる
- モジュールファイルがトップレベルファイル(main)として機能する ⇒ __name__に__main__が代入される
- モジュールファイルがimportされる ⇒ __name__にモジュール名が代入される
つまり,python XXX.pyで実行したときはif name==’main’はTrue.importを用いた時if name==’main’はFalse.