Python函数中的*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 
 ()
>>>

**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)

输出结果:

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

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

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)

输出结果:

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

-END-

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值