爲了能讓一個函數接受任意數量的位置參數,能夠在參數部分使用「*」。python
def avg(first, *rest): return (first + sum(rest) / (1 + len(rest))) print(avg(1, 2)) #1.5 print(avg(1, 2, 3, 4)) #2.5
在上面這個函數中,rest是由全部其餘位置參數組成的元組。數組
而後咱們在代碼中把它當成了一個序列來進行後續的計算。函數
爲了接受任意數量的關鍵字參數,使用一個以**開頭的參數。好比:spa
def stu_info(**kwargs): print(kwargs) print(kwargs["name"], kwargs["sex"]) stu_info(name="yang", sex = "male")
若是還系統但願某個函數能同時接受任意數量的位置參數和關鍵字參數,能夠同時使用*和**。好比:rest
def anyargs(*args, **kwargs): print(args) print(kwargs)
在使用這個函數時,全部的位置參數會被放到args元組中,而全部的關鍵字參數會放到字典kwargs中。code
一個*參數只能出如今函數定義中最後一個位置參數後面,而**參數只能出如今最後一個參數。須要注意的是,在*後面仍然能夠定義其餘參數。blog
def a(x, *args, y): pass
def b(x, *args, y, **kwargs): pass
這種參數就是強制關鍵字參數。it