Python之参数 - > 必选参数、默认参数、元组参数、字典参数(屌丝版)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

可变参数的两种形式:元组参数、字典参数

猜你喜欢

转载自blog.csdn.net/cadi2011/article/details/85248131