python 之 *args 和 **kwargs的区别

Python版本:3.10.2

注:因为这里要介绍的是基础语法,网上也有非常多的例子,而且还长一个样,总之,按自己的测试步骤描述一遍吧,有需要的按需取。

传参的时候要是能使用一个特殊的字符串来表示可变长度参数就好了,这样就不用担心需要参数个数不固定的问题:

可变长度的参数主要有 *args 和 **kwargs 两种。

*args                表示任意个参数,将参数打包成tuple给函数体调用

**kwargs          表示任意个参数,将参数打包成dict给函数体调用

传入参数的区别:

*args                 实际是一个tuple元素

**kwargs           实际上是k=v 形式的键值对

*args

>>> def args_test(*args):
...             print(args, type(args))
...
>>> args_test(1)
(1,) <class 'tuple'>
>>> args_test(1,2)
(1, 2) <class 'tuple'>
>>> args_test(1,2,3)
(1, 2, 3) <class 'tuple'>

在*args前面可以指定固定的参数:

>>> args_test("tb001", 1, 2, 3)
tb001 (1, 2, 3)
>>> args_test("tb001", "tb002", 1, 2, 3)
tb001 ('tb002', 1, 2, 3)
>>> args_test("tb001", "tb002", "tb003", 1, 2, 3)
tb001 ('tb002', 'tb003', 1, 2, 3)

**kwargs:

>>> def kwargs_test(**kwargs):
...             print(kwargs, type(kwargs))
...
>>> kwargs_test(a=1)
{'a': 1} <class 'dict'>
>>> kwargs_test(a=1, b=2)
{'a': 1, 'b': 2} <class 'dict'>
>>> kwargs_test(a=1, b=2, c=3)
{'a': 1, 'b': 2, 'c': 3} <class 'dict'>

 

注意点:参数arg、*args、**kwargs三个参数如果要一起使用的话,必须为(arg,*args,**kwargs)这个顺序,否则程序会报错。

>>> def args_order(arg, *args, **kwargs):
...             print(arg, args, kwargs)
...
>>> args_order(1, 2, 3, 4, a=1, b=2, c=3)
1 (2, 3, 4) {'a': 1, 'b': 2, 'c': 3}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FightingFreedom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值