1
>>> def test(arg1, arg2, arg3=None): pass
>>> test.func_code.co_varnames
('arg1', 'arg2, 'arg3')

我想要的是这样的:

{'args': ('arg1', 'arg2'), 'kwargs': {'arg3': None}}

有没有办法做到这一点?

4

1 回答 1

5

您可以使用inspect.getargspec()来获取函数期望的参数。

>>> inspect.getargspec(test)
ArgSpec(args=['arg1', 'arg2', 'arg3'], varargs=None, keywords=None,
        defaults=(None,))

如您所见,该keywords属性None与任何参数都可以作为 kwarg 传递;**kwargs如果存在,它将包含参数的名称。

要获取将参数名称映射到默认值的 dict,您可以使用此代码as作为返回的 ArgSpec inspect.getargspec()

defaults = dict(zip(*[reversed(l) for l in (as.args, as.defaults or [])]))
于 2012-09-09T20:58:37.810 回答