*args
如果我们不确定往一个函数中传入多少参数,或者我们希望以元组(tuple)或者列表(list)的形式传参数的时候,可以使用*args。
**kwargs
如果我们不知道往函数中传递多少个关键词参数或者想传入字典的值作为关键词参数的时候,可以使用**kwargs
List = [1,2,3]
Tuple = (4,5,6)
Dict = {'a':7,'b':8,'c':9}
def func(*args, **kwargs):
print(args,kwargs)
func()
>>> () {}
func(*List)
>>> (1, 2, 3) {}
func(*Tuple)
>>> (4, 5, 6) {}
func(*Dict)
>>> ('a', 'b', 'c') {}
func(**Dict)
>>> () {'a': 7, 'b': 8, 'c': 9}
func(*List,**Dict)
>>> (1, 2, 3) {'a': 7, 'b': 8, 'c': 9}
func(0)
>>> (0,) {}
func(0,*List)
>>> (0, 1, 2, 3) {}
func(0,**Dict)
>>> (0,) {'a': 7, 'b': 8, 'c': 9}
func(0,*List,**Dict, d = 'new')
>>> (0, 1, 2, 3) {'a': 7, 'b': 8, 'c': 9, 'd': 'new'}