## var-keywords parameter
## 定义的时候,需要两个星号作为前缀
>>>def func(arg1, arg2, **kwargs):
print (arg1, arg2, kwargs)
>>>func("hello", "Dict, values is:", x=2, y=3, z=3)
hello Dict., values is: {'y': 3, 'x': 2, 'z': 3}
## 多余的参数将自动被放入字典中提供给函数使用
## 如果你需要直接传递字典给函数
## 你需要在传递的过程中添加**
## 此时如果还有关键字参数应在字典前提供完成
## 不能在字典后再提供
## 请看下面例子中的输出差异:
>>>func("hello", "Dict., values is:", **{'x':2, 'y':3, 'z':3})
hello Dict., values is: {'y': 3, 'x': 2, 'z': 3}
>>>func("hello", "Dict., values is:", **{'x':2, 'y':3, 'z':3,})
hello Dict., values is: {'y': 3, 'x': 2, 'z': 3}
>>>func("hello", "Dict., values is:", {'x':2, 'y':3, 'z':3})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func() takes exactly 2 arguments (3 given)
>>>func("hello", "Dict., values is:", s=3, **{'x':2, 'y':3, 'z':3,})
hello Dict., values is: {'y': 3, 'x': 2, 's': 3, 'z': 3}
## 提供了重复的参数
>>>func("hello", "Dict., values is:", y=3, **{'x':2, 'y':3, 'z':3,})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func() got multiple values for keyword argument 'y'
任意数量的关键字参数
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...