Python入門 if __name__ == ‘__main__’: について
if __name__ == ‘__main__’:
以下のプログラムを実行すると"_name__"という変数を宣言していないのに、if __name__=='__main__'の実行結果がTrueとなる。調べてみると、"__name__"はPythonプリンタでPythonスクリプトを読み込むと自動的に作成されるようだ。
Pythonスクリプトを直接実行した場合には、そのスクリプトファイルは"__main__"という名前のモジュールとして認識される。そのため、スクリプトファイルを直接実行すると”__name__”変数の中に自動で"__main__"という値が代入され、if __name__ == '__main__':の実行結果はTrueとなる。
スクリプトファイルが直接実行されない場合、例えばimportされた場合はそのファイル名がモジュール名となり"__name__"に代入される。
if__name__=='_main_':の記述例(test.py)
### test.py ### def hello(): print("Hello python.") if __name__ == '__main__': print("__name__ = " + __name__) hello() else: print("__name__ = " + __name__)
実行結果
スクリプトファイルが直接実行されたため、__name__の値は__mian__となりifはTrueを返している。
__name__ = __main__ Hello python.
スクリプトファイルが直接実行されない場合の記述例(test2.py)
### test2.py ### import test
実行結果
スクリプトファイルがimportにより間接的に実行されたため、__name__にはモジュール名"test"が代入される。よって、if __name__ == "__main__":の実行結果はFalseとなる。
__name__ = test