以编程方式获取函数参数(没有 **kwargs)?

rga*_*ote 5 python python-3.x

给定以下函数:

def test(* p1=None, p2=None):
  ...
Run Code Online (Sandbox Code Playgroud)

调用方式如下:

test(p2="hello")
Run Code Online (Sandbox Code Playgroud)

我可以在运行时以编程方式获取参数及其值的列表/字典吗?

1:不想使用,**kwargs因为我想强制用户使用正确的参数名称(并计划进行类型注释)。

2:我查看了inspect获取默认值的模块,但似乎没有让我看到运行时值。

想要创建类似这样的代码:

request = {k: v for k,v in __some_magic_location__ if v is not None}
Run Code Online (Sandbox Code Playgroud)

Vin*_*ent 5

使用当地人

>>> def test(*, p1=None, p2=None):
...     return locals()
...
>>> test(p2='hello')
{'p1': None, 'p2': 'hello'}
Run Code Online (Sandbox Code Playgroud)