版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cadi2011/article/details/85248131
#必选参数forceStr
#默认参数defaultStr
#元组参数tupleStr
#字典参数dictStr
def niuB(forceStr, defaultStr = "hi", *tupleStr, **dictStr):
print forceStr
print defaultStr
print tupleStr
print dictStr
niuB("你好", defaultStr = "世界",* ("hello","Tyson"), **{"name": "tyson", "age": 88})
输出结果:
TypeError: niuB() got multiple values for keyword argument 'defaultStr'
很明显告诉你是有错的,解释器认为,defautStr得到多个参数
元组参数在解包的时候,会给前面的默认参数也给一个,哪怕你已经给默认参数传了"世界", 我觉着这是python的bug吧
修改方案
niuB("你好",* ("hello","Tyson"), **{"name": "tyson", "age": 88})
输出结果:
你好
hello
('Tyson',)
{'age': 88, 'name': 'tyson'}
必选参数也称为位置参数 positional argument
默认参数也称为关键字参数 keyword argument
可变参数的两种形式:元组参数、字典参数