1

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

import functools
...
..

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

@ 符号在这里是什么意思?

4

2 回答 2

1

这就是Python 装饰器的语法——函数或方法可以接受一个对象,比如一个函数、方法或类,并在对象被调用或返回结果时执行某些操作。

于 2012-04-07T09:18:02.317 回答
0

您从示例中遗漏了一个重要部分。可以在官方functools.wrap文档中找到类似的,如下所示:

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 装饰器是什么的资料。是其中之一。

于 2012-04-07T09:18:14.597 回答