在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