在Python中的代碼中經(jīng)常會(huì)見到這兩個(gè)詞 args 和 kwargs,,前面通常還會(huì)加上一個(gè)或者兩個(gè)星號(hào)。其實(shí)這只是編程人員約定的變量名字,,args 是 arguments 的縮寫,,表示位置參數(shù);kwargs 是 keyword arguments 的縮寫,,表示關(guān)鍵字參數(shù),。這其實(shí)就是 Python 中可變參數(shù)的兩種形式,并且 *args 必須放在 **kwargs 的前面,,因?yàn)槲恢脜?shù)在關(guān)鍵字參數(shù)的前面,。 *args的用法*args就是就是傳遞一個(gè)可變參數(shù)列表給函數(shù)實(shí)參,這個(gè)參數(shù)列表的數(shù)目未知,,甚至長度可以為0,。下面這段代碼演示了如何使用args
第一個(gè)參數(shù)是必須要傳入的參數(shù),所以使用了第一個(gè)形參,而后面三個(gè)參數(shù)則作為可變參數(shù)列表傳入了實(shí)參,,并且是作為元組tuple來使用的,。代碼的運(yùn)行結(jié)果如下
**kwargs而**kwargs則是將一個(gè)可變的關(guān)鍵字參數(shù)的字典傳給函數(shù)實(shí)參,同樣參數(shù)列表長度可以為0或?yàn)槠渌?。下面這段代碼演示了如何使用kwargs
正如前面所說的,,args類型是一個(gè)tuple,而kwargs則是一個(gè)字典dict,,并且args只能位于kwargs的前面,。代碼的運(yùn)行結(jié)果如下
調(diào)用函數(shù)args和kwargs不僅可以在函數(shù)定義中使用,還可以在函數(shù)調(diào)用中使用,。在調(diào)用時(shí)使用就相當(dāng)于pack(打包)和unpack(解包),,類似于元組的打包和解包。 首先來看一下使用args來解包調(diào)用函數(shù)的代碼,,
將元組解包后傳給對(duì)應(yīng)的實(shí)參,,kwargs的用法與其類似。
args和kwargs組合起來可以傳入任意的參數(shù),,這在參數(shù)未知的情況下是很有效的,,同時(shí)加強(qiáng)了函數(shù)的可拓展性。 歡迎大家關(guān)注公眾號(hào)“計(jì)算機(jī)視覺與機(jī)器學(xué)習(xí)” 計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)
|
|