工作原因,需要了解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的键值对数量不够或者过多,会怎么样。。可以试试
我觉得,如果你试了上面的,这个就应该猜出来了