给定以下函数:
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}
* p1=None
是一个语法错误。你是不是想说*, p1=None
? - Aran-Feytest
函数的定义吗? - Ma0{"p2": "hello"}
还是{"p1": None, "p2": "hello"}
? - internet_userdef deco(f): def _f(**kwargs): print("PARAMS:", kwargs) return f(**kwargs) return _f
然后@deco def test(...)
;这样,您可以使用kwargs
打印参数,并同时防止用户传递无效的关键字参数或没有名称的参数。 - tobias_k