当函数的参数不确定时,我们可以使用*args 和**kwargs。一般*args 无key值,**kwargs有key值。
1 *args代码示例
def fun_args(arg, *args):
print "arg:", arg
for val in args:
print "another arg:", val
args = [[2,3,4,5],[6,7], "my", 4.5]
#fun_args(1, args) #调用方式1,常见的方式
fun_args(1, *args) #调用方式2,明示args是多参数方式
fun_args(1, [2,3,4,5],[6,7], "my", 4.5) #调用方式3
输出结果:
1)fun_args(1, *args), 形参方式横向
arg: 1
another arg: [[2, 3, 4, 5], [6, 7], 'my', 4.5]
2)fun_args(1, [2,3,4,5],[6,7], "my", 4.5),直接给实参竖向
arg: 1
another arg: [2, 3, 4, 5]
another arg: [6, 7]
another arg: my
another arg: 4.5
2 **kwargs代码示例
形参和实参均使用**kwargs
def fun_kwargs(farg, **kwargs):
print "arg:", farg
for key in kwargs:
print "another key and arg: %s: %s" % (key, kwargs[key])
fun_kwargs(farg=1, myarg2="two", myarg3=3)
dic = {"args2":"two", "args3":3}
fun_kwargs(fargs=1, **dic) #调用方式1
func_kwargs(1, args2='two', args3=3) 调用方式2
实参使用**kwargs,但是形参使用独立参数,要求实参key名与形参名一致否则不可调用
def fun_kwargs1(arg1, arg2, arg3):
print "arg1:", arg1
print "arg2:", arg2
print "arg3:", arg3
kwargs = {"arg2":"two", "arg3":3}
fun_kwargs1(1, **kwargs)