python3 不定長引數
阿新 • • 發佈:2019-01-06
在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$