1、缺省参数
函数中定义带有初始值的形参
函数调用时,缺省值参数可传,也可不传
缺省参数一定在参数列表的最后面
缺省参数的数量没有限制
def x_y_sum(x,y=20):
print("x=",x)
print("y=",y)
return x+y
res1 = x_y_sum(10)
res2 = x_y_sum(10,30)
print(res1) 输出:30
print(res2) 输出:40
错误的缺省参数:
def x_y_sum(y=110,x): 缺省参数要在参数列表的最后 return x+y
2、命名参数
调用带有参数的函数时,通过指定参数名称传入参数的值
可以不按函数定义的参数顺序传入
def x_y_sum(x=10,y=20):
return x+y
res1 = x_y_sum(y=30,x=15)
res2 = x_y_sum(x=15)
res3 = x_y_sum()
print("res1=",res1) 输出:res1= 45
print("res2=",res2) 输出:res2= 35
print("res3=",res3) 输出:res3= 30
3、不定长参数
函数可以接收不定个数的参数传入
def function([format_args,] * args)
函数调用时,传入的不定参数会被封装成元组
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
res1 = any_num_sum1(20)
res2 = any_num_sum1(20,30,100)
res3 = any_num_sum1(20,30,40,50,60,100)
print(res1) 30
print(res2) 150
print(res3) 300
改变不定长参数的位置
def any_num_sum2(x,*args,y=10):
print("args={}".format(args))
print("x:{}".format(x))
print("y:{}".format(y))
rs = x+y
if len(args)>0:
for arg in args:
rs+=arg
return rs
res1 = any_num_sum2(20)
res2 = any_num_sum2(20,30,y=100)
res3 = any_num_sum2(20,30,40,50,60,y=100)
print(res1)
print(res2)
print(res3)
- 输出:
args=()
x:20
y:10
args=(30,)
x:20
y:100
args=(30, 40, 50, 60)
x:20
y:100
30
150
300
养老金,医疗,公积金
def any_num_dict(basic_money, **proportion):
print(proportion)
e_money = basic_money * proportion["e"]
m_money = basic_money * proportion["m"]
a_money = basic_money * proportion["a"]
total_money = e_money + m_money + a_money
return e_money, m_money, a_money, total_money
e, m, a, t = any_num_dict(8000, e=0.2, m=0.1, a=0.12)
print("养老:{},医疗:{},公积金:{},缴费总额:{}".format(e, m, a, t))
{'e': 0.2, 'm': 0.1, 'a': 0.12}
养老:1600.0,医疗:800.0,公积金:960.0,缴费总额:3360.0