python3 不定长参数

在python的方法中参数可以传递多个值 可以传递指定个值 也可以传递不定个多余的参数可以用*name和**keyname这样形式的形参来接收

被*name1接收的参数自动转化为一个元组 而被**name2接受的参数变为字典

MacdeMacBook-Pro:test hpb$ cat 不定长.py 
def test(a,b,c=33,*args,**keyname):
    print('a',a,type(a))
    print('b',b,type(b))
    print('c',c,type(c))
    print('args:',args,type(args))
    print('keyname:',keyname,type(keyname))

test(11,22,33,44,55,haha=666,hehe=777)
MacdeMacBook-Pro:test hpb$ python3 不定长.py 
a 11 <class 'int'>
b 22 <class 'int'>
c 33 <class 'int'>
args: (44, 55) <class 'tuple'>
keyname: {'haha': 666, 'hehe': 777} <class 'dict'>
MacdeMacBook-Pro:test hpb$ 

单纯多余的数字 例如44 55  会被 *name1接收

name=666此种形式的会被**name1接收

 

#注意不能66,name=11,77,name2=22  这种混着用 要不然会报错

 

要是* 和**作为实参时用来把原组和字典拆开 把它里面的值当做参数传递

MacdeMacBook-Pro:test hpb$ cat 不定长.py 
def test(a,b,c=33,*args,**keyname):
    print('a',a,type(a))
    print('b',b,type(b))
    print('c',c,type(c))
    print('args:',args,type(args))
    print('keyname:',keyname,type(keyname))

if __name__=='__main__':
    a=(100,200,300)
    b={'h':100,'e':111}
    test(11,22,33,44,55,*a,**b,haha=666,hehe=777)
MacdeMacBook-Pro:test hpb$ py3 不定长.py 
a 11 <class 'int'>
b 22 <class 'int'>
c 33 <class 'int'>
args: (44, 55, 100, 200, 300) <class 'tuple'>
keyname: {'h': 100, 'e': 111, 'haha': 666, 'hehe': 777} <class 'dict'>
MacdeMacBook-Pro:test hpb$ 

 

 

 

  • 32
    点赞
  • 189
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值