Python - 为包装函数指定与包装函数相同的名称
Python - give wrapper function the same name as wrapped function
是否可以修改装饰器功能
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()
打印
hello
hello
hello
Hello, world!
而不是
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()
是否可以修改装饰器功能
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()
打印
hello
hello
hello
Hello, world!
而不是
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()