動態引數*args
與**kwargs
概念說明
動態引數*args
和**kwargs
是Python中的一種參數傳遞方式,用於在函數中接收不定數量的參數。
*args
:用來接收任意數量的位置引數,可以接收0個或多個引數,它們會被收集成一個元組(tuple)。**kwargs
:用來接收任意數量的關鍵字引數,可以接收0個或多個引數,它們會被收集成一個字典(dict)。
使用方式
*args
的使用方式為在函數定義時,在需要接收位置引數的參數名稱前加上*
號,如:def func(*args)
:。在函數內部,可以像操作元組一樣來訪問args中的引數。**kwargs
的使用方式為在函數定義時,在需要接收關鍵字引數的參數名稱前加上**
號,如:def func(**kwargs)
:。在函數內部,可以像操作字典一樣來訪問kwargs中的引數。
程式範例
args
def func(*args):
print(args)
print(type(args))
func(1,2,3,4,5,6,7,8,9,10)
輸出:
kwargs
def fun1(a, b, **kwargs):
print(f"a={a}, b={b}, kwargs={kwargs}")
ans = kwargs.get('c', 0) # 如果沒有c,就回傳0,使用.get()方法不影響往下傳遞的參數
fun2(**kwargs)
return ans
def fun2(c, d, **kwargs):
print(f"c={c}, d={d}, kwargs={kwargs}")
fun3(**kwargs)
def fun3(e=1, f=2):
print(f"e={e}, f={f}")
fun1(1, 2, c=3, d=4)