python装饰器以什么开头-Python教程

资源魔 19 0
装璜器(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使用问题

抱歉,评论功能暂时关闭!