python *args 与 **kwargs

Posted helloterry1987

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于python *args 与 **kwargs的主要内容,如果未能解决你的问题,请参考以下文章

python *args 与 **kwargs

python3进阶之*args与**kwargs用法

python的*args与**kwargs

Python—参数*arg与**kwargs参数的用法

Python代码中func(*args, **kwargs)是啥意思

python中*args和**kwargs学习