python基础:不定长参数

不定长参数

基本介绍

  • 在定义函数时,可以通过在形参前面加上一个*,这样这个形参将会获取到所有实参
  • 它将会将所有的实参保存到一个元组中
  • *a会收所有位置实参,并且会将这些实参统一保存到一个元组中(装包)
def fn(*a):
    print("a=",a)


fn(1,2,3,5,6)
#a=(1, 2, 3, 5, 6)

举例:

定义一个函数,可以求任意一个数字的和

def sum(*a):
    result = 0
    #遍历元组,将元组中的数据进行累加
    for n in a:
        result += n
    print(result)


sum(3,4,9,9,7)

补充

  • 带星号的形参只能有一个
  • 带星号的参数,可以和其它参数配合使用
  • 第一个参数给a,第二个参数给b,剩下的都保存到c的元组中
def fn2(a, b, *c):
    print('a =', a)
    print('b =', b)
    print('c =', c)


fn2(1,2,3,5,6,3)
#a = 1
#b = 2
#c = (3, 5, 6, 3)
  • 可变参数不是必须写在最后,但是注意,带*的参数后的所有参数,必须以关键字参数的形式传递
  • 第一个参数给a,剩下的位置参数给b的元组,c必须使用关键字参数
def fn2(a,*b,c):
    print('a =',a)
   	print('b =',b)
    print('c =',c)
  • 如果在形参的开头直接写一个*,则要求我们的所有的参数必须以关键字参数的形式传递
def fn2(*,a,b,c):
    print('a =',a)
    print('b =',b)
    print('c =',c)


fn2(a=3,b=4,c=5)
  • *形参只能接收位置参数,而不能接收关键字参数
def fn3(*a) :
	print('a =',a)
  • **形参可以接收其他的关键字参数,它会将这些参数统一保存到一个字典中
  • 字典的key就是参数的名字,字典的value就是参数的值
  • **形参只能有一个,并且必须写在所有参数的最后
def fn3(b,c,**a) :
    print('a =',a,type(a))
    print('b =',b)
    print('c =',c)


fn3(b=1,d=2,c=3,e=10,f=20)
#a = {'d': 2, 'e': 10, 'f': 20} <class 'dict'>
#b = 1
#c = 3

参数的解包(拆包)

def fn4(a,b,c):
    print('a =',a)
    print('b =',b)
    print('c =',c)

创建一个元组

t = (10,20,30)

  • 传递实参时,也可以在序列类型的参数前添加星号,这样他会自动将序列中的元素依次作为参数传递
  • 这里要求序列中元素的个数必须和形参的个数的一致
fn4(*t)    

创建一个字典

d = {'a':100,'b':200,'c':300}
  • 通过 **来对一个字典进行解包操作
  fn4(**d)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值