给出以下功能:
def test(* p1=None, p2=None):
...
如下所示:
test(p2="hello")
我可以在运行时以编程方式获取参数的列表/字典及其值吗?
1:不想使用**kwargs
,因为我想强制用户使用正确的参数名称(并计划进行类型注释)。
2:我已经查看inspect
模块获取默认值,但似乎没有让我看到运行时值。
想要创建像这样的代码:
request = {k: v for k,v in __some_magic_location__ if v is not None}
答案 0 :(得分:3)
使用locals:
>>> def test(*, p1=None, p2=None):
... return locals()
...
>>> test(p2='hello')
{'p1': None, 'p2': 'hello'}
答案 1 :(得分:0)
您可以使用import inspect
def test(*, p1=None, p2=None):
pass
print(inspect.getcallargs(test, p2 = 'Hello'))
:
{'p2': 'Hello', 'p1': None}
输出:
/INFO:root:id/