バージョン 2.0 で 新たに追加 された仕様です。
atexit モジュールでは、後始末関数を登録するための関数を一つだ け定義しています。この関数を使って登録した後始末関数は、インタプリタが 終了するときに自動的に実行されます。
注意: プログラムがシグナルで停止させられたとき、Python の致命的な内部 エラーが検出されたとき、あるいはos._exit()が呼び出された ときには、このモジュールを通して登録した関数は呼び出されません。
このモジュールは、sys.exitfunc
変数の提供している機能の代用とな
るインタフェースです。
注意:
sys.exitfunc
を設定する他のコードとともに使用した場合には、
このモジュールは正しく動作しないでしょう。特に、他のコア Python
モジュールでは、プログラマの意図を知らなくてもatexitを自由に
使えます。sys.exitfunc
を使っている人は、代わりに
atexitを使うコードに変換してください。
sys.exitfunc
を設定するコードを変換するには、atexit を
import し、sys.exitfunc
へ束縛されていた関数を登録するのが
最も簡単です。
func[, *args[, **kargs]]) |
通常のプログラムの終了時、例えばsys.exit() が呼び出されると き、あるいは、メインモジュールの実行が完了したときに、登録された全ての 関数を、最後に登録されたものから順に呼び出します。通常、より低レベルの モジュールはより高レベルのモジュールより前に import されるので、 後で後始末が行われるという仮定に基づいています。
終了ハンドラの実行中に例外が発生すると、(SystemExit以外の 場合は)トレースバックを表示して、例外の情報を保存します。 全ての終了ハンドラに動作するチャンスを与えた後に、最後に送出された 例外を再送出します。