python中的装包与拆包

1.*args

def test1(a, *args):
    # 输出第一个参数a
    print(a)
    # args是一个元组,里面包括除了第一个参数以外的无名参数
    print(args)
    # *args是将args元组的每一个元素分别拿出来,然后依次打印
    print(*args)


test1(1, 2, 3, 4, 5)
print()  # 增加分割行
test1(7, (6, 5, 4, 3))

运行结果如下:

1
(2, 3, 4, 5)
2 3 4 5

7
((6, 5, 4, 3),)
(6, 5, 4, 3)

由此可见:args是一个元组类型,而在形参中*args代表可以接收多余的无名参数,而在实参中,*args代表将元组拆包,拆分成单个数据来使用。如果给支持参数是元组类型的函数传递一个元组,那么这个函数会把元组当做一个单独的数据存入到元组中去,拆包的过程和普通数据一样。这种可以传不定长参数的函数,可以只传参数a,因为它是必须的,后面的*args可以传递也可以不传递。

2.**kwargs

def test1(a, **kwargs):
    # 输出第一个参数a
    print(a)
    # akwrgs是一个字典,里面包括除了第一个参数以外的有名参数
    print(kwargs)
    # **kwargs是将kwargs字典的每一个元素分别拿出来,一次还原成m=100,n=2

    #但是**kwargs不支持打印出来
    # print(**kwargs)

    #对**kwargs进行拆包
    test2(**kwargs)

def test2(m,n):
    print(m,n)

test1(1,m=100,n=2)

输出结果为:

1
{'m': 100, 'n': 2}
100 2

总结:

*args作为形参是用来接收多余的未命名参数,而**kwargs是用来接收key=value这种类型的命名参数,args是元组,kwargs是字典。装包就是把未命名的参数放到元组中,把命名参数放到字典中。拆包就是还原最初传进来的数据样貌。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值