以编程方式获取函数参数(不带**kwargs)?

2024-06-17 12:55:31 发布

您现在位置:Python中文网/ 问答频道 /正文

给定以下函数:

def test(* p1=None, p2=None):
  ...

名称如下:

^{pr2}$

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

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

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

希望创建这样的代码:

request = {k: v for k,v in __some_magic_location__ if v is not None}

Tags: 函数用户test名称none列表参数字典
2条回答

使用locals

>>> def test(*, p1=None, p2=None):
...     return locals()
...
>>> test(p2='hello')
{'p1': None, 'p2': 'hello'}

您可以使用inspect.getcallargs

import inspect
def test(*, p1=None, p2=None):
  pass

print(inspect.getcallargs(test, p2 = 'Hello'))

输出:

^{pr2}$

相关问题 更多 >