python装饰器写法,python装饰器--原来如此简单
装饰器(Decorators)是 Python 的一个重要部分。简单地说:它们是修改其他功能的功能。它们有助于使我们的代码更短,更有Pythonic风格。
要理解Python中的decorator,我们必须先理解闭包的概念。(推荐学习:Python视频教程)
在计算机科学中,闭包(英文:closures),也称为词法闭包或函数闭包,是指自由变量的函数。这个被引用的自由变量将与这个函数一起存在,即使它已经离开了创建它的环境。
装饰器
一个普通的装潢师一般是这样的:
导入功能工具
定义日志(函数):
@functools.wraps(func)
def包装(*args,**kwargs):
print(call %s(): % func。__name__)
print(args={} 。格式(*args))
return func(*args,**kwargs)
因此,返回包装器定义了一个装饰器,它打印出方法名及其参数。
打电话,要使用@开头:
@logdef测试(p):
打印(测试。__name__ param: p)
测试(“我是参数”)输出:
致电测试():
args=我是一个参数
测试param :i我是一个param装饰器在使用时,用了@语法,让人有些困扰。实际上,decorator只是一个方法,和下面的调用方法没什么区别:
def测试(p):打印(测试。__name__ param: p)
包装器=日志(测试)
包装(“我是一个参数”)@语法只是将函数传入装饰器函数,并无神奇之处。
值得注意的是@functools.wraps(func),这是python提供的一个装饰器。它可以将原始函数的元信息复制到装饰器中的func函数中。函数的元信息包括文档字符串、名称、参数列表等。
你可以试着去掉@ func tools . wrapps(func),你会发现test的输出。__name__成为一个包装器。
更多Python相关技术文章,请访问Python教程专栏学习!这就是python decorator开始的细节。更多信息请关注热门IT软件开发工作室其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。