python 序列解包

一级棒的CSDN文章

函数参数类型

Example1


def func(arg,**kwargs):
    print(kwargs.items())  
    print('arg:',arg)
    print(kwargs)
data={'a': 1, 'b': 2}
func(1,data)  
# 报错:func() takes 1 positional argument but 2 were given
# func() 接受一个位置传参,可以调用时却传了两个(data(字典)也被当成位置传参,NOT 多值传参)
# 正确写法是  **data

print(**data)  # 'a' is an invalid keyword argument for this function(解包后的a=1 对print 来说是无效的关键字参数,因为print() 的签名并没有a=1 的关键字参数)
print({**data})  # after unpacking,底层可能是接受a=1,b=2,调用dict(X)将'a': 1, 'b': 2--->{}字典内

Example2

def testDict(**kwargs):
    for key, value in kwargs.items():
        print(key, '-->', value)


testDict(**{'octopus': 12})  # 测试用例 'a=2,b=3'
# 如果没有在{}前面加入**,报错TypeError: testDict() takes 0 positional arguments but 1 was given

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值