我不确定这是否可行,我想将字典解包到函数中,但我没有类似的参数。是否可以轻松地将字典限制为一个子集?
def foo(a=0, b=0, c=0):
print("a=%s, b=%s, c=%s"%(a,b,c))
my_dict = {'a':10, 'b':20, 'd':40}
foo(**my_dict)
输出
TypeError Traceback (most recent call last)
<ipython-input-1-d40731664736> in <module>()
3
4 my_dict = {'a':10, 'b':20, 'd':40}
----> 5 foo(**my_dict)
TypeError: foo() got an unexpected keyword argument 'd'
我想得到
a=10, b=20, c=0
'd' 被自动拒绝的结果。
这只是一个例子。在我的例子中,函数不是我的,我不能重新定义她的参数,foo 是不可修改的。
在与 foo() 类似的情况下,我有许多函数,这些函数是对象的方法。
有什么想法吗?
最佳答案
Inspecting the function signature将帮助:
import inspect
params = inspect.signature(foo).parameters.keys()
foo(**{k: v for k, v in my_dict.items() if k in params})
关于python - 参数不兼容时字典解包为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47715035/