5.11 在程序退出前执行代码的技巧 =============================== .. image:: http://image.iswbm.com/20200804124133.png 使用 atexit 这个内置模块,可以很方便地注册退出函数。 不管你在哪个地方导致程序崩溃,都会执行那些你注册过的函数。 示例如下 .. image:: http://image.iswbm.com/20200510112133.png 如果\ ``clean()``\ 函数有参数,那么你可以不用装饰器,而是直接调用\ ``atexit.register(clean_1, 参数1, 参数2, 参数3='xxx')``\ 。 可能你有其他方法可以处理这种需求,但肯定比不上使用 atexit 来得优雅,来得方便,并且它很容易扩展。 但是使用 atexit 仍然有一些局限性,比如: - 如果程序是被你没有处理过的系统信号杀死的,那么注册的函数无法正常执行。 - 如果发生了严重的 Python 内部错误,你注册的函数无法正常执行。 - 如果你手动调用了\ ``os._exit()``\ ,你注册的函数无法正常执行。