我們可以透過拆開運算符,來達到建立具有接收不固定位置引數和不估定關鍵字引數的函式。假設我們今天要建立一個,可以讀取不固定引數數量的函式,就會很有用。
舉例來說,當我們要建立一個能將所有引數平方相加函式,可以使用下列寫法:
1 | def sum_of_power(args): |
有*前綴的argv表示函式接收的引數是一個元組(type(args)會得到<class ‘tuple’=””>),像是把傳入的多個引數packing成一個元組,再透過拆開運算符來將元組拆開成多個位置引數作處理。而關鍵字引數也可以應用在位置引數之後,假如我們要讓相加的引數改成可指定的次方向,可在函式加上關鍵字引數:
1 | def sum_of_power(args power=2): |
有兩個*前綴的kwargv表示接收的引數是一個字典(type(kwargs)會得到<class ‘dict’=””>),像是把傳入的多個關鍵字引數packing成一個字典,再透過拆開運算符來將字典拆開成多個關鍵字引數作處理。假設今天要針對不同會員設定多個會員詳細資料,可以用下列寫法:
1 | def personal_detail(account, **kwargs): |
呼叫此函式時,只允許傳入一個位置引數,或是可以用關鍵字引數方式,來額外提供多個資訊。
參考資料:
位置引數(Positional Argument)與關鍵字引數(Keyword Argument)
透過*和**來對群集資料Unpacking
Python docs - Arbitrary Argument Lists