如何在不更改函数名的情况下使用python decorator?

时间:2015-02-11 13:42:37

标签: python decorator

def decorate(func):
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

@decorate
def test(a=1,b=2):
    return a+b

print test.__name__

结果是包装器。有没有办法让结果是"测试"?

1 个答案:

答案 0 :(得分:4)

使用functools.wraps

from functools import wraps

def decorate(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

@decorate
def test(a=1,b=2):
    return a+b

print test.__name__