from functools import wraps
def deco(func):
@wraps(func)
def wrapper(*args, **kwargs):
func()
return wrapper
上面的装饰器中有句话 @wraps(func) ,为何我自己写装饰器的时候不能这样写?
def deco(func):
def wrapper(*args, **kwargs):
func()
return wrapper
@deco
def func():
pass
上面是用deco装饰func的最通常写法。
为何不能写 @deco(func) ,人家可以写 @wraps(func) ?
deco 就是一个装饰器。
wraps(func) 返回了一个装饰器。wraps 本身不是装饰器。