我是python的新手,在示例中看到了以下代码
import functools
...
..
def wrapper(func):
@functools.wraps(func)
....
@符号在这里意味着什么?
答案 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其中一个。