简单说明Python中*args 和 **kwargs的区别

*args,**kwargs是什么?

其实就是函数的不定参数。定义了这两种参数的函数,可以给它传0到多个参数。

1. *args例子

In [19]: def fun1(*args):
    ...:     print(args)
    ...:

In [20]: fun1()


In [21]: fun1(1,2,"abc")
1 2 abc

可以看到,*args会取得所有入参。

2. **kwargs 例子

In [30]: fun2(a=1,b=2)
{'a': 1, 'b': 2}

In [31]: fun2(1,3)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-31-0f91f63085a1> in <module>()
----> 1 fun2(1,3)

TypeError: fun2() takes 0 positional arguments but 2 were given

注意看 In [30] 和 In [31]。

区别

发现区别了吗,如果给fun2传fun1那样的参数,解释器会报错:“未定义位置型参数,却收到了两个参数。” 也就是说,kwargs需要的是带名称的参数,而args代表位置型参数(无名称参数)。从英语上来说,kwargs多出来的kw其实就是keyword的意思,表示这是“键值对”参数,就像字典那样。

如果定义一个函数同时定义两种可变参数,那么两种都可以正常获取。如下:

In [32]: def fun3(*args, **kwargs):
    ...:     print(args)
    ...:     print(kwargs)
    ...:
In [34]: fun3(1,3, a=8,b=9)
(1, 3)
{'a': 8, 'b': 9}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值