Python atexit模块

枫铃3年前 (2021-07-10)Python274

atexit模块介绍

作用:让注册的函数在解释器正常终止时自动执行,可以注册多个函数,所注册的函数会逆序执行(据查资料,造成逆序的原因为函数压栈造成的,先进后出)

1、正常注册 ,示例如下。

def goodbye(name, adjective):
    print("Goodbye %s, it was %s to meet you."% (name, adjective))

def hello():
    print('hello world!')

def a():
    print('a')

import atexit
atexit.register(goodbye, 'Donny', 'nice')
atexit.register(a)
hello()
# 输出
PS E:\Atom\files\app> python .\ex9_atexit.py
hello world!
a
Goodbye Donny, it was nice to meet you.

2、可以使用装饰器来注册,但是只适用于没有参数时调用。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import atexit

@atexit.register
def hello():
    print('Hello world!')

# 输出
PS E:\Atom\files\app> python .\ex9_atexit.py
Hello world!

3、取消注册, 示例如下。

def goodbye(name, adjective):
    print("Goodbye %s, it was %s to meet you."% (name, adjective))

def hello():
    print('hello world!')

def a():
    print('a')

import atexit
atexit.register(goodbye, 'Donny', 'nice')
atexit.register(a)
atexit.register(a)
atexit.register(a)
hello()
atexit.unregister(a)
# 输出
PS E:\Atom\files\app> python .\ex9_atexit.py
hello world!
Goodbye Donny, it was nice to meet you.

这个模块一般用来在程序结束时,做资源清理。

相关文章

python 将字节字符串转换成十六进制字符串

想将一个十六进制字符串解...

python去除rpm仓库中同名低版本的包

编程思路 遍历目标路径的rpm包并保存特性包列表; 利用python模块rpmUtils提取RPM包的特征信息:包名 版本号 架构 遍历...

Python | 5分钟搞定 Python3 元组

Python | 5分钟搞定 Python3 元组

简介 Python3 中元组表现为如下形式: 元组(tuple)是一种静态的(immutable)或者说是不可变(unchangeabl...

大部分人都会忽略的Python易错点总结

python中复数实现(-2) ** 0.5和开根号sqrt(-2)的区别 (-2)**0.5和sqrt(-2)是不同的,前者是复数后者是会报...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。