小编典典

如何获得修饰函数的参数规范?

python

我需要确定装饰器中函数的argspec(inspect.getargspec):

def decor(func):
    @wraps(func)
    def _decor(*args, **kwargs):
        return func(*args, **kwargs)
    return _decor

@decor
def my_func(key=1, value=False):
    pass

我需要能够检查包装的“ my_func”并返回键/值参数及其默认值。似乎inspect.getargspec没有获得适当的功能。

(FWIW,我需要它来进行一些运行时检查/验证以及以后的文档生成)


阅读 215

收藏
2021-01-20

共1个答案

小编典典

如果您使用Michele Simionato的装饰器模块来装饰您的功能,则decorator.decorator它将保留原始功能的签名。

import inspect
import decorator

@decorator.decorator
def decor(my_func,*args,**kw):
    result=my_func(*args,**kw)
    return result

@decor
def my_func(key=1, value=False):
    pass
decorated_argspec = inspect.getargspec(my_func)
print(decorated_argspec)
# ArgSpec(args=['key', 'value'], varargs=None, keywords=None, defaults=(1, False))
2021-01-20