每天一点python——day79

#每天一点Python——79
#函数参数总结:
'''
位置实参[函数的调用]
将序列中的每个元素都转换为位置实参[函数的调用,使用*]
关键字实参[函数的调用]
将字典中的每个键值对都转换为关键字实参[函数的调用使用**]
默认值形参【函数定义】
关键字形参【函数定义,使用*】
个数可变的位置形参【函数定义,使用*】
个数可变的关键字形参【函数定义,使用**】
'''
#例:
def h1(a,b,c):#a,b,c在函数的定义处,是形式参数
    print('a=',a)
    print('b=',b)
    print('c=',c)
#函数体是输出a,b,c的值
#函数调用
h1(10,20,30)#函数调用时候的参数传递,称为位置传参,因为他是按顺序的,把10赋值给a,20赋值给b,30赋值给c
list1=[11,22,33]
#现在有个列表,需要把11传给a,22传给b,33传给c
'''
h1(list1)
程序报错
TypeError: h1() missing 2 required positional arguments: 'b' and 'c'
它的意思是我有三个参数,但是只传了一个,它把列表当成了一个元素
'''
#解决
h1(*list1)#在函数调用时,将列表中的每个元素,都转换成了位置实参传入

h1(a=100,b=200,c=300)
#函数调用,所以是关键字实参,在程序运行时,将100赋值给a,200赋值给b,300赋值给c

#创建一个字典
dict1={'a':101,'b':102,'c':103}
'''
h1(dict1)
程序报错
TypeError: h1() missing 2 required positional arguments: 'b' and 'c'
同样只把字典当成了一个参数
'''
#解决
h1(**dict1)#调用函数时,将字典的每一个键值对转为关键字实参传入
#以上是函数进行调用时的参数传递

#例
def h(a,b=10):#b在函数的定义处,所以b是行参,而且进行了赋值,所以b称为默认值形参
    print('a=',a)
    print('b=',b)
#调用
def h3(*a1):#个数可变的位置形参
    pass
def h4(**a2):#个数可变的关键字形参
    pass
#都是在函数的定义处
#调用时,因为是可变的,你传多少都可以
h3(1,2,3,3,4)#结果为元组
h4(a=1,b=2,c=3)#结果为字典
#关键字形参
def h5(a,b,c,d):
    print(a)
    print(b)
    print(c)
    print(d)
#调用h5时,
h5(1,2,3,4)#位置实参传递
h5(a=11,b=22,c=33,d=44)#关键字实参传递
h5(10,20,c=3,d=2)#前面两个采用的是位置实参传递,后面两个采用的关键字实参传递
#如果cd只能用关键字实参传递,怎么办
def h6(a,b,*,c,d):#在cd之前加一个*即可
    print(a)
    print(b)
    print(c)
    print(d)
'''
h6(1,2,3,4)
报错,因为c和d没有采用关键字传参
'''
h6(a=11,b=22,c=33,d=44)
h6(10,20,c=3,d=2)
#cd采用了关键字传参,所以不报错
'''
def h6(a,b,*,c,d):
*代表,从*之后的参数,只能采用关键字传参,*叫做关键字形参
'''

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值