python-函数:参数


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 function([format_args,] * args):

def any_num_sum1(x,y=10,*args):
    # 打印不定长参数
    print("args={}".format(args))
    # x+y
    rs = x+y
    if len(args)>0:
        for arg in args:
            rs+=arg
    return rs
res1 = any_num_sum1(20)          #args=()
res2 = any_num_sum1(20,30,100)   #args=(100,)
res3 = any_num_sum1(20,30,40,50,60,100) #args=(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))
    # 打印x 和 y
    print("x:{}".format(x))
    print("y:{}".format(y))
    # x+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)

# 如果按照以上位置定义的话,"x,*args,y=10"
# 如果想要给y进行传参,就要写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 function([format_args,] ** args):

养老金,医疗,公积金

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值