装璜器(Decorators)是 Python 的一个首要局部。简略地说:他们是修正其余函数的性能的函数。他们有助于让咱们的代码更冗长,也更Pythonic(Python范儿)。
想要了解Python中的装璜器,不能不先了解闭包(closure)这一律念。(保举学习:Python视频教程)
正在较量争论机迷信中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是援用了自在变量的函数。这个被援用的自在变量将以及这个函数一起存正在,即便曾经分开了发明它的环境也没有破例。
装璜器
一个一般的装璜器普通是这样:
import functools def log(func): @functools.wraps(func) def wrapper(*args, **kwargs): print('call %s():' % func.__name__) print('args = {}'.format(*args)) return func(*args, **kwargs) return wrapper
这样就界说了一个打印出办法名及其参数的装璜器。
挪用之,要应用@扫尾:
@logdef test(p): print(test.__name__ + " param: " + p) test("I'm a param")
输入:
call test(): args = I'm a param test param: I'm a param
装璜器正在应用时,用了@语法,让人有些困扰。其实,装璜器只是个办法,与上面的挪用形式不区分:
def test(p): print(test.__name__ + " param: " + p) wrapper = log(test) wrapper("I'm a param")
@语法只是将函数传入装璜器函数,并没有神秘的地方。
值患上留意的是@functools.wraps(func),这是python提供的装璜器。它能把原函数的元信息拷贝到装璜器外面的 func 函数中。函数的元信息包罗docstring、name、参数列表等等。
能够测验考试去除了@functools.wraps(func),你会发现test.__name__的输入变为了wrapper。
更多Python相干技巧文章,请拜访Python教程栏目进行学习!
以上就是python装璜器以甚么扫尾的具体内容,更多请存眷资源魔其它相干文章!
标签: Python python教程 python编程 python使用问题
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
抱歉,评论功能暂时关闭!