缺省参数
函数中定义带有初始值的形参
参数调用时,缺省参数可传,可不传
缺省参数一定在参数列表的最后面
缺省参数的数量没有限制
def x_y_sum(x,y=20): #缺省参数要在参数列表的最后
print("x=",x)
print("y=",y)
return x+y
res1 = x_y_sum(10) #不填参数默认缺省为20
res2 = x_y_sum(10,30) #填写参数,缺省参数的初始值会被覆盖掉
print(res1)
print(res2)
运行结果:
x= 10
y= 20
x= 10
y= 30
30
40
命名参数
调用带有参数的函数时,通过指定参数名称传入参数的值,可以不按函数定义的参数顺序传入
def x_y_sum(x,y=20): #缺省参数要在参数列表的最后
print("x=",x)
print("y=",y)
return x+y
res1 = x_y_sum(7,8) #我们调用的时候没有添加x,y,默认22给了x,11给了y
res2 = x_y_sum(y=22,x=11) #调用的时候添加x,y就不用管顺序是否相反,把22给了x,把11给了y
print(res1)
print(res2)
运行结果:
x= 7
y= 8
x= 11
y= 22
15
33
不定长参数
函数可以接受不定个数的参数导入
格式1:
def function([format_args,] * args)
函数调用时,传入的不定参数会被封装成元组
例如,
def any_num_sum1(x,y=10,*args):#一个 * 将不定长的参数转换为元组
print("args={}".format(args))
rs = x+y
if len(args)>0:
for arg in args:
rs+=arg
return rs
res2 = any_num_sum1(100,200,300,400) # 将100给了x,200给了y,剩余的参数给了不定长参数。一个 * 将不定长的参数转换为元组
print(res2)
运行结果:
args=(300, 400)
1000
格式2:
def function([format_args,] ** args)
函数调用时,传入的不定参数会被封装成字典
例如,
def any_num_sum1(basic_money,** money):
print(money)
e_money = basic_money * money["a"]
return e_money
res2 = any_num_sum1(1000,a=200,q=300,y=400)
print(res2)
运行结果:
{'a': 200, 'q': 300, 'y': 400}
200000