Python函数中*args和**kwargs来传递变长参数的用法
单星号形式(*args)用来传递非命名键可变参数列表。双星号形式(**kwargs)用来传递键值可变参数列表。
下面的例子,传递了一个固定位置参数和两个变长参数。
deftest_var_args(farg,*args): print"formalarg:",farg forarginargs: print"anotherarg:",arg test_var_args(1,"two",3)
结果如下:
formalarg:1 anotherarg:two anotherarg:3
这个例子用来展示键值对形式的可变参数列表,一个固定参数和两个键值参数。
deftest_var_kwargs(farg,**kwargs): print"formalarg:",farg forkeyinkwargs: print"anotherkeywordarg:%s:%s"%(key,kwargs[key]) test_var_kwargs(farg=1,myarg2="two",myarg3=3)
执行结果:
formalarg:1 anotherkeywordarg:myarg2:two anotherkeywordarg:myarg3:3
调用函数时,使用*argsand**kwargs
这种语法不仅仅是在函数定义的时候可以使用,调用函数的时候也可以使用
deftest_var_args_call(arg1,arg2,arg3): print"arg1:",arg1 print"arg2:",arg2 print"arg3:",arg3 args=("two",3) test_var_args_call(1,*args)
执行结果如下:
arg1:1 arg2:two arg3:3
键值对方式:
deftest_var_args_call(arg1,arg2,arg3): print"arg1:",arg1 print"arg2:",arg2 print"arg3:",arg3 kwargs={"arg3":3,"arg2":"two"} test_var_args_call(1,**kwargs)
结果如下:
arg1:1 arg2:two arg3:3