def blahblah(func):
def wrapper(*args):
pass # blah blah blah....
return wrapper
@blahblah
def func1(arg1):
pass # blah blah blah
@blahblah
def func2(arg1):
pass # blah blah blah
functions = [func1, func2]
for func in functions:
print(func.__name__, func(0))
我想要的是获取此代码的原始名称,例如“ func1”和“ func2”。但是之前编写的代码给了我“包装器”和“包装器”。有什么办法吗?最好不要更改包装代码。
wrapper None
wrapper None
func1 None
func2 None
您可以functools.wraps
按如下方式使用helper函数,该函数将保留包装函数的原始名称和doc字符串,例如:
from functools import wraps
def blahblah(func):
@wraps(func)
def wrapper(*args):
pass # blah blah blah....
return wrapper
@blahblah
def func1(arg1):
pass # blah blah blah
print(func1.__name__)
# func1
由于小次郎在评论中指出,虽然这保留的名称和文档字符串,有一些事情要注意的- https://hynek.me/articles/decorators/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句