我是 python 新手,在示例中看到了以下代码
import functools
...
..
def wrapper(func):
@functools.wraps(func)
....
@ 符号在这里是什么意思?
这就是Python 装饰器的语法——函数或方法可以接受一个对象,比如一个函数、方法或类,并在对象被调用或返回结果时执行某些操作。
您从示例中遗漏了一个重要部分。可以在官方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 装饰器是什么的资料。这是其中之一。