見出し画像

【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)

■ atexit のヘルプ引用より ■
[名前]

atexit

[説明]
プログラマーが通常のプログラム終了時に複数の終了関数を定義できるようにするためのものです。
registerとunregisterが定義されています。

[関数]
--------------------------------------------------------------------------
register(func, *args, **kwargs) -> func
通常のプログラム終了時に実行されるように関数を登録します。

func - 終了時に呼び出される関数
args - funcに渡すオプションの引数
kwargs - funcに渡すオプションのキーワード引数

デコレータとしての使用を容易にするために、funcが返されます。
--------------------------------------------------------------------------
unregister(func) -> None
atexit.registerを使用して以前に登録された終了関数の登録を解除します。

func - 登録を解除する関数

いいなと思ったら応援しよう!