【Python】直接実行したときだけ処理/終了するときに処理
個人用メモです。
モジュールが直接実行されたときの記述をよく忘れてしまいます。
■直接実行したときに処理する:__name__
以下記述を用意すると、モジュール作成時のテスト用コードを残しておくことができます。
## testcode.py ##
if __name__ == "__main__":
# ここに直接実行時のみ実行したい処理を記述
print("直接実行された: __name__ =", __name__)
else:
print("他モジュールからインポートされた: __name__ =", __name__)
##---------- 結果 ----------
# 直接実行した場合
直接実行された: __name__ = __main__
# インポートした場合
他モジュールからインポートされた: __name__ = testcode
__name__変数は、Pythonスクリプトがどのように実行されているかを示します。スクリプトが直接実行されるとき、__name__は__main__になります。他のモジュールからインポートされるときには、モジュール名になります。
■終了時に実行される: atexitモジュール
atexitモジュールを使用すると、プログラム終了時に特定の処理を実行できます。
import atexit
def oshimai():
print("プログラムが終了します")
# プログラム終了時にoshimai関数を呼び出す
atexit.register(oshimai)