python中的*args和**kwargs
python中的*args和**kwargs用作函数声明参数可以支持可变长参数列表:
- *args将函数的变长参数保存至tuple中(只保存参数的值)。
- 而**kwargs将函数变长参数的参数名和值分别以key和value的形式保存至dict中。
调用函数时,使用*args和**kwargs可以起到解包的作用:
- *args将列表中的元素加入到函数的参数列表。
- **kwargs将dict中的kv对分别传入key指定的函数参数中。
1 def test_fun1(*args): 2 print('test function 1') 3 print(type(args)) 4 for item in args: 5 print(item) 6 7 def test_fun2(**args): 8 print('test function 2') 9 print(type(args)) 10 for k,v in args.items(): 11 print("{0} = {1}".format(k, v)) 12 13 def test_fun3(a1, a2, a3): 14 print('test function 3') 15 print("args: {0} {1} {2}".format(a1, a2, a3)) 16 17 if __name__ == "__main__": 18 19 test_fun1(1,2,3) 20 21 test_fun2(name = 'jack', age=1) 22 23 l = (1, 2, 3) 24 test_fun3(*l) 25 26 d = {'a2':2, 'a1':1, 'a3':3} 27 test_fun3(*l)