測試了下python的可變長參數。
注意如下:
1. *對應的是元組,**對應的是dict。
所以,在設定參數的時候,可以不用*args1和**args2,而是使用args1, args2來接收。這樣的好處是,可以傳遞多個函數的參數。如:下面定義的fuction p,就傳了兩對參數。
2. 使用對應元組和dict的時候,與接收相同,仍為:*args1, **args2.
3. 傳遞元組參數的時候,注意,單元素的元組需要額外加一個逗號,如:(args, )這樣才行,否則會不認為是元組。
#!/usr/bin/python
#-*-coding:utf-8-*-
#!Author:zhujialong@letv.com
# Modified: 20160421.
import osdef f1(f1,f2,ff3=1):print "f1:",f1,"f2:",f2,"ff3:",ff3return 1 + 10*ff3def f2(f1,f2,ff3=2):print "f1:",f1,"f2:",f2,"ff3:",ff3return 1 + 10*ff3def f3(f1,f2,ff3=3):print "f1:",f1,"f2:",f2,"ff3:",ff3return 1 + 10*ff3def f4(s1,s2=100):print "s1:",s1print "s2:",s2def p1(p1,p2,f,*args1,**args2):print "p1:",p1,"p2:",p2print type(args1),args1print type(args2),args2f(*args1,**args2)def p(p1,p2,f,args1,args2, f2=None, args3=(), args4={}):print "p1:",p1,"p2:",p2print type(args1),args1print type(args2),args2print type(args3),args3print type(args4),args4f(*args1,**args2)if f2:if args4:f2(*args3,**args4) else:f2(*args3,**args4) #f2(*args3)#f2("ls")for f in [f1, f2, f3]:p1(1,2,f,10,f2=20,ff3=3)#p(1,2,f,(10,20),{},os.system,(str("pwd"), ))#p(1,2,f,(10,20),{"ff3":111},f4,(str("pwd")))#p(1,2,f,(10,20),{"ff3":111},f4,(10,20))#p(1,2,f,(10,20),{"ff3":111},f4,(10,))#p(1,2,f,(10,20), {})print
總結
以上是生活随笔為你收集整理的python的可变长参数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。