python *args
,**kwargs
ref
【Python】*args
和 **kwargs
的用法【最全详解】
概述
def fun(param, *args, **kwargs)
-
param: parameter 参数『固定的』
-
arg: argument, 参数『可变的』
-
position argument
-
keyword argument
-
*args
:
args
本质是一个tuple
传递的是一个含一个或多个变量的元组
可用下标索引
传参:传入"2", "3"
或(3,4)
**kwargs
:
kwargs
本质是dict
传递的是含一个或多个变量的字典,key
是变量名,value
是变量值
可用key
索引
传参:传入a=1,b=2
或**{'d': 1, 'e': 2}
注意:
- 参数传入的位置,
args
型的参数,必须在kwargs
型的参数之前,否则会报错:- SyntaxError: positional argument follows keyword argument
- SyntaxError: iterable argument unpacking follows keyword argument unpacking
- 参数是按序解析的
demo
def fun(param, *args, **kwargs):
print(param)
print(args)
for arg in args:
print("arg:", arg)
print(kwargs)
a = kwargs['a']
print(a)
d = kwargs['d']
print(d)
fun("1", "2", "3", a=1, b=2, *(3,4), **{'d': 1, 'e': 2})
fun(*(3, 4), "1", "2", "3", a=1, b=2, **{'d': 1, 'e': 2})