実行スクリプト上での__name__
は__main__
になる
my_module.py
def print_name():
print(__name__)
print_name()
$ python my_module.py
__main__
moduleとして呼び出した時の__name__
はmodule名になる
moduleをimportしたときにmoduleを全て一度実行するので、my_moduleが3回printされている。
main.py
import my_module
my_module.print_name()
print(my_module.__name__)
print(__name__)
$ python main.py
my_module
my_module
my_module
__main__
moduleをimportして使用するときに実行したくない処理はif __name__ == "__main__":
の中に入れる
my_module.py
def print_name():
print(__name__)
if __name__ == "__main__"
print_name()
main.py
import my_module
my_module.print_name()
print(my_module.__name__)
print(__name__)
$python my_module.py
__main__
$ python main.py
my_module
my_module
__main__
公式ドキュメント
https://docs.python.org/ja/3/reference/import.html?highlight=__name__#name__
https://docs.python.org/ja/3/library/__main__.html