@登录python方法调用

时间:2012-04-07 09:13:40

标签: python methods

我是python的新手,在示例中看到了以下代码

import functools
...
..

def wrapper(func):
            @functools.wraps(func)
            ....

@符号在这里意味着什么?

2 个答案:

答案 0 :(得分:1)

这是Python decorators的语法 - 可以接受对象的函数或方法,比如函数,方法或类,并在调用对象或返回结果时执行某些操作。

答案 1 :(得分:0)

你从这个例子中遗漏了一个重要的部分。可以在official functools.wrap doc中找到类似的内容,如下所示:

from functools import wraps
def my_decorator(f):
    @wraps(f)
    def wrapper(*args, **kwds):
        print('Calling decorated function')
        return f(*args, **kwds)
    return wrapper

在这个例子中,名字与你的名字有点混淆。在这一个@wraps(f)正在装饰函数wrapper(紧随其后的那个)。

关于Python装饰器的内容有很多来源。 Here其中一个。