Python 3.x Python-为包装函数指定与包装函数相同的名称

Python 3.x Python-为包装函数指定与包装函数相同的名称,python-3.x,python-decorators,Python 3.x,Python Decorators,是否可以修改decorator函数 def wrap(function): def wrapper(*args, **kwargs): print(function.__name__) return function(*args, **kwargs) return wrapper 制定代码 @wrap @wrap @wrap def hello(): print("Hello, world!") hello() 印刷品 而不是 wr

是否可以修改decorator函数

def wrap(function):
    def wrapper(*args, **kwargs):
        print(function.__name__)
        return function(*args, **kwargs)
    return wrapper
制定代码

@wrap
@wrap
@wrap
def hello():
    print("Hello, world!")


hello()
印刷品

而不是

wrapper
wrapper
hello
Hello, world!

??我的目标是组成几个依赖函数名的装饰器。

下面的代码应该可以工作,尽管我不太确定您的意图

无论如何,相信我的勇气,我会避免这样的建设

import functools

def wrap(function):
    @functools.wraps(function)
    def wrapper(*args, **kwargs):
        print(function.__name__)
        return function(*args, **kwargs)
    return wrapper

@wrap
@wrap
@wrap
def hello():
    print("Hello, world!")

hello()

functools.update\u包装器?functoolsfunctools.wraps?谢谢,很有效!你想发布答案吗?如果没有,我将编辑问题以包含您的解决方案。@Rastapopulus目前做不了多少。我在机场,正要登机
import functools

def wrap(function):
    @functools.wraps(function)
    def wrapper(*args, **kwargs):
        print(function.__name__)
        return function(*args, **kwargs)
    return wrapper

@wrap
@wrap
@wrap
def hello():
    print("Hello, world!")

hello()