1. 可接受任意數量位置參數的函數
為了能讓一個函數接受任意數量的位置參數,可以在參數部分使用“*”。
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是由所有其他位置參數組成的元組。
然后我們在代碼中把它當成了一個序列來進行后續的計算。
2. 可接受任意數量關鍵字參數的函數
為了接受任意數量的關鍵字參數,使用一個以**開頭的參數。比如:
def stu_info(**kwargs): print(kwargs) print(kwargs["name"], kwargs["sex"]) stu_info(name="yang", sex = "male")
3. 可同時接受任意數量位置參數和關鍵字參數的函數
如果還系統希望某個函數能同時接受任意數量的位置參數和關鍵字參數,可以同時使用*和**。比如:
def anyargs(*args, **kwargs): print(args) print(kwargs)
在使用這個函數時,所有的位置參數會被放到args元組中,而所有的關鍵字參數會放到字典kwargs中。
4. *和**的位置
一個*參數只能出現在函數定義中最后一個位置參數后面,而**參數只能出現在最后一個參數。需要注意的是,在*后面仍然可以定義其他參數。
def a(x, *args, y): pass
def b(x, *args, y, **kwargs): pass
這種參數就是強制關鍵字參數。