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