Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在函数decorator包装后获得函数的原始名称? 代码_Python - Fatal编程技术网

Python 如何在函数decorator包装后获得函数的原始名称? 代码

Python 如何在函数decorator包装后获得函数的原始名称? 代码,python,Python,我想要的是得到这个代码的原始名称,比如“func1”和“func2”。但是之前编写的代码只给了我“wrapper”和“wrapper”。有办法吗?”最好不要更改包装代码 输出 理想输出 您可以使用functools.wrappshelper函数,如下所示,它将保留wrapped函数的原始名称和文档字符串,例如: from functools import wraps def blahblah(func): @wraps(func) def wrapper(*args):

我想要的是得到这个代码的原始名称,比如“func1”和“func2”。但是之前编写的代码只给了我“wrapper”和“wrapper”。有办法吗?”最好不要更改包装代码

输出 理想输出
您可以使用
functools.wrapps
helper函数,如下所示,它将保留wrapped函数的原始名称和文档字符串,例如:

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
正如在注释中指出的,虽然这保留了名称和文档字符串,但在主题上有一些事情需要注意-

  wrapper None
  wrapper None
  func1 None
  func2 None
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