引子:
我们先来看看sum函数,在这里我们无论输入多少个参数都可以求和。但是,如果我们只在sum函数中设置了有限个参数,输多了或少了程序就会报错。如果想让程序更加灵活一些,我们就需要用到可变参数。
可变参数有两种:
不定长必选参数 *args(元组类型)
不定长关键词参数 **kargs(字典类型)
首先是必选参数 *args:
其实可以不用args这个名字,只是约定俗成的,大家都用它来表示。
>>def sum_num(*args):
>> print(args,type(args))
>> pass
>>sum_num(2,4,6)
(2,4,6) <class 'tuple'>
>>def sum_num(*args):
>> sta = 0
>> for i in args: #这里就不要加*了,把args值遍历出来,然后相加
>> sta += i
>> return sta
>>result = sum_num(2,4,6)
>>print(result)
12
接下来是 **kargs:
>>def sum_num(**kargs):
>> print(kargs,type(kargs))
>> pass
sum_num(a=2,b=4)
{'a':2,'b':4} <class 'dict'>
区别:
- 如果是(a,b,c)这种类型,只能使用*args
- 如果是(a=1,b=2)这种类型,只能用**kargs
参数组合:
>>def func(num1,num2=3,*arg,**kargs):
>> print(num1,num2,arg,kargs)
>>func(1,2,3,4,a=5)
1 2 (3, 4) {'a': 5}
参数顺序:
必选参数 -> 不定长必选参数 -> 默认参数 -> 不定长关键词参数
num1 -> *args -> num2=3 -> **kargs