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)
原文地址:https://www.cnblogs.com/HadesBlog/p/15161727.html