如果我有一个功能或方法,我可以找到哪些参数是“预先分配的”?例如。如果我写
def action(one, two, three=3): pass
我可以获得在其中包含赋值运算符的参数列表吗?在这种情况下,当然会是
['three']
我认为答案可能在于inspect
。 inspect.getargspec(action)
真的关闭,因为它返回默认参数的元组,但它没有说明每个参数属于哪个参数。
答案 0 :(得分:4)
来自inspect.getargspec()
documentation:
defaults 是默认参数值的元组,如果没有默认参数,则为None; 如果此元组具有 n 元素,则它们对应于 args 中列出的最后 n 元素。
强调我的。
因此,要将默认值与参数匹配,请使用:
dict(zip(argspec.args[-len(argspec.defaults):], argspec.defaults))
获取将参数名称映射到其默认值的字典:
>>> import inspect
>>> def action(one, two, three=3): pass
...
>>> argspec = inspect.getargspec(action)
>>> dict(zip(argspec.args[-len(argspec.defaults):], argspec.defaults))
{'three': 3}