>>> def test(arg1, arg2, arg3=None): pass
>>> test.func_code.co_varnames
('arg1', 'arg2, 'arg3')
我想要的是这样的:
{'args': ('arg1', 'arg2'), 'kwargs': {'arg3': None}}
有没有办法做到这一点?
>>> def test(arg1, arg2, arg3=None): pass
>>> test.func_code.co_varnames
('arg1', 'arg2, 'arg3')
我想要的是这样的:
{'args': ('arg1', 'arg2'), 'kwargs': {'arg3': None}}
有没有办法做到这一点?
您可以使用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 [])]))