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的主要内容,如果未能解决你的问题,请参考以下文章