Python引數組合

FrankYou發表於2016-08-01

引數定義的順序必須是:①必選引數、②預設引數、③可選引數、④命名關鍵字引數、⑤關鍵字引數

1 #a,b為必選引數;c為預設引數;args為可變引數;kw為關鍵字引數
2 def f1(a,b,c=0,*args,**kw):
3     print('a=','b=',b,'c=','args=',args,'kw=',kw)
4 
5 #引數定義的順序必須是:必選引數、預設引數、可選引數、命名關鍵字引數、關鍵字引數
6 def f2(a,b,c=0,*,d,**kw):
7     print('a=','b=',b,'c=','d=',d,'kw=',kw)

 呼叫

f1(1,2)
f1(1,2,3)
f1(1,2,c=3)
f1(1,2,3,'a','b')
f1(1,2,3,'a','b',x=99,y=88,z=77,t='100')
f2(1, 2, city='Shanghai', ext=None)

呼叫結果

a= 1 b= 2 c= 0 args= () kw= {}
a= 1 b= 2 c= 3 args= () kw= {}
a= 1 b= 2 c= 3 args= () kw= {}
a= 1 b= 2 c= 3 args= ('a', 'b') kw= {}
a= 1 b= 2 c= 3 args= ('a', 'b') kw= {'x': 99, 'y': 88, 'z': 77, 't': '100'}
a= 1 b= 2 c= 0 city= Shanghai kw= {'ext': None}

 以list或dict引數傳入

args=(1,2,3,4)
kw={'Nation':'China','City':'Shanghai'}
f1(*args,**kw)

args=(1,2,3)
kw={'y':33,'city':'Shanghai'}
f2(*args,**kw)

結果

a= 1 b= 2 c= 3 args= (4,) kw= {'City': 'Shanghai', 'Nation': 'China'}
a= 1 b= 2 c= 3 city= Shanghai kw= {'y': 33}

所以,對於任意函式,都可以通過類似func(*args, **kw)的形式呼叫它,無論它的引數是如何定義的。

 

相關文章