【发布时间】:2020-10-06 22:13:10
【问题描述】:
之前我使用Signature.bind(argument_dict) 将参数字典转换为BoundArguments 对象,该对象具有可以传递给函数的.args 和.kwargs。
def foo(a: str, b: str, c: str): ...
argument_dict= {"a": "A", "c": "C", "b": "B"}
import inspect
sig = inspect.signature(foo)
bound_arguments = sig.bind(**argument_dict)
foo(*bound_arguments.args, **bound_arguments.kwargs)
但是当函数只有位置参数时,这似乎是不可能的。
def foo(a: str, /, b: str, *, c: str): ...
import inspect
sig = inspect.signature(foo)
argument_dict= {"a": "A", "b": "B", "c": "C"}
bound_arguments = sig.bind(**argument_dict) # Error: "a" is positional-only
在这种情况下如何以编程方式调用该函数?
这是从参数字典构造BoundArguments 的原生方式吗?
【问题讨论】: