我想用kwargs将同一字典的元素传递给几个函数。问题是这个字典所包含的内容超过了函数在其参数列表中接收到的内容。
例如,假设我有以下字典:
d = dict(a=1,b=2,c=3)
现在,我将在一个接收字典参数的函数中使用它—它将工作:
def func1(a=3,b=2,c=5):
return a+b+c
x = func1(**d)
但是,如果函数接收到的参数少于字典,它将正确地导致错误:
def func2(a=1,b=1):
return a+b
x = func2(**d)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In [4], line 4
1 def func2(a=1,b=1):
2 return a+b
----> 4 x = func2(**d)
TypeError: func2() got an unexpected keyword argument 'c'```
是否有一种方法,使这种情况下的工作,而不必重新安排我的函数参数?也许通过创建字典的子集?是否有一种简洁而优雅的方法将字典装入函数中?
您可以使用*args
和**kwargs
。
用
定义函数def func(a, b, **kwargs):
return a+b
,它应该可以工作。这可能是一个快速而肮脏的解决方案……: -)