缺省参数、不定长参数
原创
©著作权归作者所有:来自51CTO博客作者风华浪浪的原创作品,请联系作者获取转载授权,否则将追究法律责任
缺省参数:
在程序里面,定义一个函数,并给其传入了默认的参数,就叫缺省参数。
如果给函数传个参数,就用传入的; 如果没传入参数,就用默认的。
def func1(a, b=22): #缺省参数只能放在最后
c = a + b
print(c)
func1(2)
如果修改默认参数可以传入时指定, eg: c = 18
不定长参数
在定义某个函数时不确定时确定有多少个值时,可以在定义函数时多写一个变量*args,
*args:实参中多余的没有名字参数以元组的方式保存到*args中
**kwargs:实参中命名参数以字典的方式保存到**kwargs
def func2(a, b, *args, **kwargs):
print(a, b)
print(args)
print(kwargs)
func2(33, 44, 55, 66, num1=77, num2=88)
输出结果
33 44
(55, 66)
{'num1': 77, 'num2': 88}
拆包
*在形参中添加是用来保存一些特别的值,在实参中添加是用来保存拆包
拆元组:实参掺入元组在变量前加*,定义时以元组保存。
拆字典:实参掺入元组在变量前加**, 定义时以字典保存。
如果不加相应*,则会统一到元组中去,达不到拆包的目的
def func3(a, b, *args, **kwargs):
print(a, b)
print(args)
print(kwargs)
A = (55, 66, 77)
B = {'name':'laowang','age':33, 'adreess':'隔壁'}
func3(33, 44, A, B)
print('--------拆包--------------------')
func3(33, 44, *A, **B)
输出结果
33 44
((55, 66, 77), {'age': 33, 'name': 'laowang', 'adreess': '隔壁'})
{}
----------拆包------------------
33 44
(55, 66, 77)
{'age': 33, 'name': 'laowang', 'adreess': '隔壁'}