在Python中定義函式,可以用必選引數、預設引數、可變引數和關鍵字引數,這4種引數都可以一起使用,或者只用其中某些,但是請注意,引數定義的順序必須是:必選引數、預設引數、可變引數和關鍵字引數
定義一個函式,包含上述4種引數:
def func(a,b,c=0,*args,**kw): print 'a=',a,'b=',b,'c=',c,'args=',args,'kw=',kw
在函式呼叫的時候,Python直譯器自動按照引數位置和引數名把對應的引數傳進去。
print func(1,2) # = > a= 1 b= 2 c= 0 args= () kw= {} print func(1,2,c=3) # = > a= 1 b= 2 c= 3 args= () kw= {} print func(1,2,3,'a','b') # => a= 1 b= 2 c= 3 args= ('a', 'b') kw= {} print func(1,2,3,'a','b',x=99) # =>a= 1 b= 2 c= 3 args= ('a', 'b') kw= {'x': 99}
最神奇的是通過一個tuple和dict,你也可以呼叫該函式:
args=(1,2,3,4) kw={'x':99} print func(*args,**kw) # =>a= 1 b= 2 c= 3 args= (4,) kw= {'x': 99}
所以,對於任意函式,都可以通過類似func(*args, **kw)的形式呼叫它,無論它的引數是如何定義的。
轉自:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738449338c8a122a7f2e047899fc162f4a7205ea3000