python - 我应该如何使用 python 装饰器而不更改函数名称?

标签 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__

结果是包装器。有什么方法可以让结果为“test”吗?

最佳答案

使用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__

关于python - 我应该如何使用 python 装饰器而不更改函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28455869/

相关文章:

python - 我可以在调用函数之前延迟装饰器的发生吗?

Python - 装饰器接收单个 arg 的歧义

python - makemigrations 无法识别数据库更改

python - 如何使用 CherryPy 配置 IP 地址?

python - 在python中增加财务季度

eclipse - 如何在文件保存时更新装饰器?

python - 我可以看到 Python 装饰器对我的代码做了什么吗?

python - python装饰器中的 self

python - 在带 wifi 的公寓中安装 python 包时出错

Python:打印文本元素不起作用