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