Python之引數 - > 必選引數、預設引數、元組引數、字典引數(屌絲版)
阿新 • • 發佈:2018-12-27
#必選引數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
可變引數的兩種形式:元組引數、字典引數