一级棒的CSDN文章
Example1
def func(arg,**kwargs):
print(kwargs.items())
print('arg:',arg)
print(kwargs)
data={'a': 1, 'b': 2}
func(1,data)
# 报错:func() takes 1 positional argument but 2 were given
# func() 接受一个位置传参,可以调用时却传了两个(data(字典)也被当成位置传参,NOT 多值传参)
# 正确写法是 **data
print(**data) # 'a' is an invalid keyword argument for this function(解包后的a=1 对print 来说是无效的关键字参数,因为print() 的签名并没有a=1 的关键字参数)
print({**data}) # after unpacking,底层可能是接受a=1,b=2,调用dict(X)将'a': 1, 'b': 2--->{}字典内
Example2
def testDict(**kwargs):
for key, value in kwargs.items():
print(key, '-->', value)
testDict(**{'octopus': 12}) # 测试用例 'a=2,b=3'
# 如果没有在{}前面加入**,报错TypeError: testDict() takes 0 positional arguments but 1 was given