Python的函数定义中可以在参数里添加**kwargs——简单来说目的是允许添加不定参数名称的参数,并作为字典传递参数。但前提是——你必须提供参数名。
例如下述情况:
class C():
def __init__(self, **kwargs):
print(kwargs)
有如下输入:
In [48]: c = C()
{}
In [49]: c = C(a = 1)
{'a': 1}
这一切都符合常理。但是当我使用一个字典传递的时候:
In [50]: c = C({'a': 1})
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-50-2be6d5be2a84> in <module>()
----> 1 c = C({'a': 1})
我一开始以为是__init__太娇气了,换成一般办法:
In [51]: class C():
...: def f(self, **kwargs):
...: