python函数参数*args和**args

工作原因,需要了解Python,朋友推荐了Python学习手册4

看了两天,实在忍不住吐槽一下,翻译水平的实在让人失望,后悔买了(而且如果你像作者一样,会点java,刚接触这本书,估计要抓狂了   --!)

    函数参数的*args,看一遍就能明白

1 def test(name,*a):
2     print(name)
3     print(a)

    test('aaaa',1,2,3,4,5)

    执行结果应该如下

    'aaaa'

    (1,2,3,4,5)

    其实,这个就像java里面的可变参数...   不知道形容的对不,就这么理解吧。。。

    再看下面这个:

>>def test(name,**args):
....    print(name)
....    print(args)

>>test('aaa',a=1,b=2,c=3)

>>'aaa'

>>{'a':1,'b':2,'c':3}

    呃,原来是字典,但为什么书里面翻译我看不懂. --!

 

    好吧,有些函数调用的时候有test(*(1,2,3,4))

    如下:

>>def test(a,b,c,d,e):
....    print(a,b,c,d,e)

>>t = (1,2,3,4)

>>test('aa',*t)

>>('aa',1,2,3,4)

    明白了吧,实际上就是把*后面的参数解包

    你可以试下test('aa','bb',*t)       test(*t)

    

    更变态的是,居然还有**的,难道把字典解包,那传入的是字典的key还是value?

    

>>def test(a,b,c,d):
....    print(a,b,c,d)

>>a = {'a':1,'b':2,'c':3,'d':4}

>>test(**a)

>>(1,2,3,4)

    呃,原来传入的是value。。那如果字典a的键值对数量不够或者过多,会怎么样。。可以试试

    我觉得,如果你试了上面的,这个就应该猜出来了

 

转载于:https://www.cnblogs.com/shiluocn/p/4862414.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值