[Python] *args 與 **kwargs 使用方式

ChunJen Wang
jimmy-wang
Published in
Mar 25, 2021

於函式中代入長度可變資料,進行打包運算。

一、* 使用情境:

於函式呼叫時,直接丟入數值進行運算。
其中的參數為長度可變,並直接打包為一個 tuple。

特別注意tuple為 immutable。

範例:給func數個numbers,只留下偶數(evens)

注意此適用情境僅限於給數值資料(numeric data)。

# 只留下偶數 (only pick evens)def myfunc(*nums):
  List = []
  for i in nums:
    if i%2==0:
      List.append(i)
  return List
myfunc(2,3,7,8,9,10)
#[output] = [2,8,10]

二、**使用情境:

於函式呼叫時,需要事先定義好參數並賦值(Assign)。
所給予的資料,會存成一組字典(Dictionary)。

而這兩種可變資料也可以同時並用,就會依據函式中給予的參數或數值,自動進行分配,並轉換為tuple(採用*args)或dictionary(採用**kwargs)格式的資料。

  • 主要運用在使用者輸入資料長度可變動,長度也可為0。
  • args 是 arguments 縮寫,表示位置參數;
    kwargs 是 keyword arguments 縮寫,表示關鍵字參數。
  • *args 中的args可以自己命名,同理**kwargs。
  • 兩者並行時,*args必須置於**kwargs之前。

最後,附上一張大神整理的筆記,感謝觀看至此^^。

stack 上大神整理。 source: https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters

--

--

ChunJen Wang
jimmy-wang

嗨,歡迎你的到來,我目前在銀行擔任DS。過去曾做過銀行大型專案BA,也曾在轉職科技業DE中踢了鐵板,相信每一個人都有自己要走的路,而努力的過程,可以讓我們離心中理想更接近,如果我的文章能帶給你一些啟發與幫助,別忘了幫我在文章底下按下拍手~^^