python---可变参数*args, **kwarg的应用


前言

当函数的参数前面有一个星号*的时候表示是一个可变的位置参数,两个星号**表示是可变的关键字参数

一、可变参数说明

可对函数传递的参数进行打包(元组tuple或字典dictionary),也能打散(分解成单个元素),其中元组的打包和解包使用单星号*,字典的打包和拆解使用双行号**

二、可变参数打包

打包,就是将传递给函数的任意多个(也可以是零个)非关键字参数/关键字参数打包成一个元组/字典(元组只能接收非关键字参数,字典只能接收关键字参数)

代码如下(示例):

def param(*args, **kwarg):
    for i in args:
        print(i)
    for i,j in kwarg.items():
        print(j, j)
    print('*' * 20)

if __name__ == '__main__':
    param(1, 2, a=4, b=5)
    param(2, 3, a=1, b=2, c=3)

返回结果:

1
2
4 4
5 5
********************
2
3
1 1
2 2
3 3
********************

Process finished with exit code 0

二、可变参数解包

解包,就是将传递给函数的一个列表、元组或字典拆分成独立的多个元素然后赋值给函数中的参数变量(包括普通的位置参数,关键字参数,元组,字典也即**关键字参数)
代码如下(示例):

def param(*args, **kwarg):
    for i in args:
        print(i)
    for i,j in kwarg.items():
        print(j, j)
    print('*' * 20)

if __name__ == '__main__':
    a = (1, 2, 3)
    b = [1, 16, 22]
    c = {'a':11, 'b':13}
    param(a, c)
    param(*a, **c)
    param(b, c)
    param(*b, **c)

返回结果:

#说明:param(a, c)  输出a和b
(1, 2, 3)
{'a': 11, 'b': 13}
********************
#说明:param(*a, **c)  打散a和c
1
2
3
11 11
13 13
********************
#说明:param(b, c)  输出b和c
[1, 16, 22]
{'a': 11, 'b': 13}
********************
#说明:param(*b, **c)  打散b和c
1
16
22
11 11
13 13
********************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值