python *args 与 **kwargs

描述:

  *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成*args 和**kwargs。  *(星号)才是必须的. 你也可以写成*ar 和**k. 而写成*args 和**kwargs只是一个通俗的命名约定。

python函数传递参数的方式有两种:

  • *args表示任何多个无名参数,它本质是一个tuple;
  • **kwargs表示关键字参数,它本质上是一个dict;

如果同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。

实例1:

 1 def fun(*args,**kwargs):
 2 
 3     print('args=', args)
 4 
 5     print('kwargs=',kwargs)
 6 
 7 fun(1,2,3,4,A='a',B='b',C='c',D='d')
 8 
 9 #输出结果:
10 
11 #args= (1, 2, 3, 4)
12 
13 #kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}

实例2:

 1 def mutil(name,*ar):
 2     print(name,"主人,你好")
 3     for item in ar:
 4         print("我的名字叫:",item)
 5 
 6 mutil("liuhu","xiaoyun","liuwei")
 7 
 8 输出结果:
 9 # liuhu 主人,你好
10 # 我的名字叫: xiaoyun
11 # 我的名字叫: liuwei

实例3:

1 def love(**kwargs):
2     for key,value in kwargs.items():
3         print("{0}爱着{1}".format(key,value))
4 love(name="liuhu",age=18)
5 
6 #输出结果:
7 # name爱着liuhu
8 # age爱着18

实例4:

 1 def test(arg1, arg2, arg3):
 2     print("arg1:", arg1)
 3     print("arg2:", arg2)
 4     print("arg3:", arg3)
 5 
 6 args = ("two", 3, 5)
 7 test(*args)
 8 kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
 9 test(**kwargs)
10 
11 #输出结果:
12 # arg1: two
13 # arg2: 3
14 # arg3: 5
15 
16 # arg1: 5
17 # arg2: two
18 # arg3: 3

猜你喜欢

转载自www.cnblogs.com/helloTerry1987/p/10992209.html
今日推荐