*args和**kwargs:属于可变参数
*args
会将传入的参数放入名为args的元组中
**kwargs
会将传入的参数放入名为kwargs的字典中
def test1(*args,**kwargs):
print(args)
print(kwargs)
test1(1,2,3,4,5,6,a=7,b=8)
(1, 2, 3, 4, 5, 6)
{'a': 7, 'b': 8}
在形式参数前面加一个*
号,它会收集所有剩下没有配对的实际参数位置参数
*
: 一个*号只能表示位置参数
def test1(a,b,c,*args):
print(a)
print(b)
print(c)
print(args)
test1(1,2,4,5,6,7)
1
2
4
(5, 6, 7)
**
: 只能收集关键字参数,打印的结果为字典形式
作用:在函数定义的时候,不知道有多少个实际参数会传入
def test2(**kwargs):
print(kwargs)
test2(a=1,b=2,c=3,d=4)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
而在工作中往往*args
,**kwargs
一起使用
def test2(*args,**kwargs):
print(args)
print(kwargs)
test2(6,8,9,7,a=1,b=2,c=3,d=4)
(6, 8, 9, 7)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}