当前位置:   article > 正文

Python函数中的*args, **kwargs是什么意思?如何使用?

*args, **kwargs

当我们在写程序时,不确定将来要往函数中传入多少个参数,即可使用可变参数(即不定长参数),用*args,**kwargs表示。

*args称之为Non-keyword Variable Arguments,无关键字参数;
**kwargs称之为keyword Variable Arguments,有关键字参数;

当函数中以列表或者元组的形式传参时,就要使用*args;

当传入字典形式的参数时,就要使用**kwargs。

*args示例:

当位置参数与不定长参数一起使用时,先把参数分配给位置参数再将多余的参数以元组形式分配给args:




>>> def test(a, b, *args):
        c = args    
        print(a, '\n', b, '\n', c)
     
>>> test("this is a", "bbbb", "is c", "09090", "8888")
>>> # 当提供的参数多于位置参数时的输出结果:
this is a 
bbbb 
('is c', '09090', '8888')
>>># 当提供的参数少于位置参数时的输出结果:
>>> test("this is a", "bbbb")
this is a 
 bbbb 
 ()
>>>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

**kwargs示例:

当传入函数的参数为字典格式时,使用**kwargs。

def test_kwargs(a,b,*args,**kwargs):
    print("a=", a)
    print("b=", b)
    c = args
    print("c=", c)
    dict = kwargs
    print("name=",dict['name'])
    print("age=", dict['name'])


test_kwargs(0,1,2,3,name="test1", age=22)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

输出结果:

a= 0
b= 1
c= (2, 3)
name= test1
age= 22
  • 1
  • 2
  • 3
  • 4
  • 5

除了上述传参方式,还可以直接传入整个字典:

def test_kwargs(a,b,*args,**kwargs):
    print("a=", a)
    print("b=", b)
    c = args
    print("c=", c)
    dict = kwargs
    print("name=",dict['name'])
    print("age=", dict['age'])


test_dict = {"name": "test2", "age": 23}
test_kwargs(0,1,2,3,**test_dict)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

输出结果:

a= 0
b= 1
c= (2, 3)
name= test2
age= 23
  • 1
  • 2
  • 3
  • 4
  • 5

-END-

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/442726
推荐阅读
相关标签
  

闽ICP备14008679号