8python中,当在不确定给函数传递参数的个数时,可以使用*args和**kargs形式(args、kargs可以使用其他名称定义)。
一、*args形式
eg1:
def func(x,*a): print x print a func(1,2,3,4,5)
调用函数后结果为:
1 (2, 3, 4, 5)
从过结果可看出,在使用*a后,当给函数传递多个参数时,函数会将第一个实参传递给第一个型参,然后将剩下的实参传递给了*a,而*a将剩下的参数放在了一个元组中。
如果函数中定义了(x,*a),而传递参数的时候,只传了一个实参,那么*a将会生成一个空的元组。
eg2:
def func(x,*a): print x print a func(1)
调用函数后结果为:
1 ()
从结果可以看出,参数1传给了x,而*a生成了一个空的元组。
需要注意的是,当元素中只有一个元素时,该元素后面需要加一个“,”
eg3:
def func(x,*a): print x print a func(1,2)
调用函数后结果为:
1 (2,)
元组里面只有一个元素2,后面还有一个“,”。
二、*kargs形式
*kargs形式会将接收到的参数存在一个字典中,因此,在传递参数时,需要以键值队的形式。
eg1:
def func(i,**a): print a print i func(3,x=4)
执行结果为:
{'x': 4} 3
注意参数传递的方式:x=4