k0b0's record.

Computer Engineering, Arts and Books

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