Python-如何获取方法参数名称?
鉴于Python
函数:
def a_method(arg1, arg2):
pass
如何提取参数的数量和名称。即,鉴于我有提及func,因此我希望func.[something]
返回("arg1", "arg2")
。
为此的使用场景是,我有一个装饰器,并且希望以与实际函数作为键一样的顺序使用方法参数。即,"a,b"
我打电话时装饰器的外观如何a_method("a", "b")
?
-
看一下
inspect
模块-这将为你检查各种代码对象属性。>>> inspect.getfullargspec(a_method) (['arg1', 'arg2'], None, None, None)
其他结果是 args和* kwargs变量的名称,以及提供的默认值。即。
>>> def foo(a, b, c=4, *arglist, **keywords): pass >>> inspect.getfullargspec(foo) (['a', 'b', 'c'], 'arglist', 'keywords', (4,))
请注意,在某些Python实现中,某些可调用对象可能不是自省的。例如,在CPython中,C中定义的某些内置函数不提供有关其参数的元数据。结果,
ValueError
如果你inspect.getfullargspec()
在内置函数上使用,则会得到一个。从Python 3.3开始,你可以
inspect.signature()
用来查看可调用对象的调用签名:>>> inspect.signature(foo) <Signature (a, b, c=4, *arglist, **keywords)>