1. 程式人生 > >Python之引數 - > 必選引數、預設引數、元組引數、字典引數(屌絲版)

Python之引數 - > 必選引數、預設引數、元組引數、字典引數(屌絲版)

#必選引數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

可變引數的兩種形式:元組引數、字典引數