*args 和 **kwargs 是什麼?

在講到str.format()方法的時候,我們說語法是:

str.format(*args, **kwargs)
*args 代表可以收多個引數,所收集的資料是位置引數
**kwargs 代表可以收多個關鍵字引數,所收集的資料是關鍵字引數,使用dict來取得關鍵字名稱(關鍵字名稱即為dictkey)

關於位置引數關鍵字引數可以在function函數的引數使用相關知識點學習到。這邊只要知道,引數的輸入有關鍵字引數與位置引數兩種。若是有指定引數的名稱,就是關鍵字引數;若沒有指定引數的名稱,只能由引數的先後順序來辨別引數的話,就是位置引數

argsargument的簡寫,是引數的意思
透過 * 收集的引數會被放到一個 tuple 中,所以我們可以使用 for 來對它進行拆解。

print('{2}, {1}, {0}'.format(*'abc'))
# 'c, b, a'

kwargs 則是 Keyword Argument 的簡寫
透過 ** 可以拆解dict或是將資料收集至dict

data = {'name': ‘LabVIEW360’, 'est': 20}
print('The name is {name}, aged {est}.'.format(**data))
# The name is LabVIEW360, aged 20

不只str可用,很多地方也可以用,例如函式和類

2個讚