标签:
在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,
参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
请看实例代码:
def func(a,b,c=0,*args,**kw): print ‘a=‘,a,‘b=‘,b,‘c=‘,c,‘args=‘,args,‘kw=‘,kw >>> func(1,2) a= 1 b= 2 c= 0 args= () kw= {} >>> func(1,2,3) a= 1 b= 2 c= 3 args= () kw= {} >>> func(1,2,4,(1,3,4,5)) a= 1 b= 2 c= 4 args= ((1, 3, 4, 5),) kw= {} >>> func(1,2,4,11,22,33,44,55) a= 1 b= 2 c= 4 args= (11, 22, 33, 44, 55) kw= {} >>> func(1,2,4,11,22,33,44,55,{‘x‘:‘xx‘,‘y‘:‘yy‘}) a= 1 b= 2 c= 4 args= (11, 22, 33, 44, 55, {‘y‘: ‘yy‘, ‘x‘: ‘xx‘}) kw= {} >>> func(1,2,4,11,22,33,44,55,x=‘xx‘,y=‘yy‘) a= 1 b= 2 c= 4 args= (11, 22, 33, 44, 55) kw= {‘y‘: ‘yy‘, ‘x‘: ‘xx‘}
#也可以这么写 def func(a,b,c=0,*args,**kw): print ‘a=‘,a,‘b=‘,b,‘c=‘,c,‘args=‘,args,‘kw=‘,kw args = (1, 2, 3, 4) kw = {‘x‘: 99} func(1,2,4,*args, **kw) a= 2 b= 3 c= 4 args= (5, 6, 7, 8) kw= {‘y‘: 100, ‘x‘: 99}
总结:
要注意定义可变参数和关键字参数的语法:
*args
是可变参数,args接收的是一个tuple;
**kw
是关键字参数,kw接收的是一个dict。
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1, 2, 3)
,又可以先组装list或tuple,再通过*args
传入:func(*(1, 2, 3))
;
关键字参数既可以直接传入:func(a=1, b=2)
,又可以先组装dict,再通过**kw
传入:func(**{‘a‘: 1, ‘b‘: 2})
。
标签:
原文地址:http://www.cnblogs.com/gide/p/5550418.html