一.可变参数
定义一个接收可变参数的函数,如下:
住:enumerate方法会对一个可迭代的元素返回【序号】和【当前值】
def var_param(*num):
for index,value in enumerate(num):
print index,value
调用输出,解释请看代码注释
>>> a=[11,22,33]
#直接传a列表,可变参数会认为a列表是一个值
>>> var_param(a)
0 [11, 22, 33]
#使用*a将【a列表的每一项】作为参数由可变参数接收
>>> var_param(*a)
0 11
1 22
2 33
#正常传入3个参数,统一被可变参数接收
>>> var_param(11,22,33)
0 11
1 22
2 33
>>>
二.关键字参数
先来一个简单的调用
#方法
def key_param(a):
print a
#调用
#指定关键字a并传值,正确接收输出
>>> key_param(a=6)
6
#指定关键字b并传值,方法中未定义该关键字,报错
>>> key_param(b=6)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
key_param(b=6)
TypeError: key_param() got an unexpected keyword argument 'b'
定义一个接收不定量关键字参数的方法
def keys_param(**kw):
print kw
调用结果
>>> qq={'a':1,'b':2,'c':3}
#两种错误调用方法传参qq,*qq,原因暂时不清楚
>>> keys_param(qq)
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
keys_param(qq)
TypeError: keys_param() takes exactly 0 arguments (1 given)
>>> keys_param(*qq)
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
keys_param(*qq)
TypeError: keys_param() takes exactly 0 arguments (3 given)
#使用**调用,将字典中的key:value每一项传入
>>> keys_param(**qq)
{'a': 1, 'c': 3, 'b': 2}
#调用以关键字参数的形式传入参数,会以字典形式接收
>>> keys_param(a=1,b=2,c=3)
{'a': 1, 'c': 3, 'b': 2}