可以写@wraps(f),为何不可以用在自定义的装饰器上?

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) ?

阅读 1.6k
1 个回答

deco 就是一个装饰器。
wraps(func) 返回了一个装饰器。wraps 本身不是装饰器。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进