Python中定义的函数参数列表可以很神奇,主要是有非关键字可变长参数和关键字变量参数。
非关键字可变长参数
首先我们定义如下函数:
def tuple_var_args(arg1,arg2=‘default arg2‘,*vargs_tuple): print ‘format arg1:‘,arg1 print ‘format arg2:‘,arg2 for arg in vargs_tuple: print ‘another arg:‘,arg
然后就可以按照如下方式调用:
tuple_var_args(‘arg1‘) tuple_var_args(‘arg1‘,‘arg2‘) tuple_var_args(‘arg1‘,arg2=‘arg2‘) tuple_var_args(‘arg1‘,‘arg2‘,‘arg3‘) tuple_var_args(‘arg1‘,‘arg2‘,*(‘arg3‘,))tuple_var_args(‘arg1‘,*(‘arg3‘,))#这里arg3传递给arg2
关键字变量参数
首先定义如下函数
def dict_var_args(arg1,arg2=‘default arg2‘,**vargsd): print ‘format arg1:‘,arg1 print ‘format arg2:‘,arg2 for arg in vargsd: print ‘another arg:‘,arg调用方式如下:dict_var_args(‘arg1‘) dict_var_args(‘arg1‘,‘arg2‘) dict_var_args(‘arg1‘,arg2=‘arg2‘) dict_var_args(‘arg1‘,‘arg2‘,arg3=‘arg3‘) dict_var_args(‘arg1‘,arg3=‘arg3‘) dict_var_args(1,**{‘foo‘:4,‘bar‘:5}) dict_var_args(**{‘arg1‘:1,‘foo‘:4,‘bar‘:5})混合使用
定义如下函数
def tuple_dict_var_args(arg1,arg2=‘default arg2‘,*tuple_args,**vargsd): print ‘format arg1:‘,arg1 print ‘format arg2:‘,arg2 for t_arg in tuple_args: print ‘another no-key arg:‘,t_arg for arg in vargsd: print ‘another key arg:‘,arg调用方式如下:
tuple_dict_var_args(1,2,3,4,5)#3,4,5传给*tuple_args tuple_dict_var_args(1,*(1,2,3,45),a=1,b=2) tuple_dict_var_args(1,*(1,2,3,45),**{‘a‘:‘a‘,‘b‘:‘b‘})