Python的解包

Python的解包,第1张

概述元组解包a,b,c=(1,2,3)#a:1b:2c:3字符串解包a,b,c="xyz"#a:xb:yc:z字典解包字典解包后,只会把字典的key取出来,value则丢掉了。a,b,c={"a":1,"b":2,"c":3}#a:'a'b:'b'c:'c'等号左右元素不等时的解包在Pytho 元组解包
a, b, c = (1, 2, 3)# a:1 b:2 c:3
字符串解包
a, b, c = "xyz"# a:x b:y c:z
字典解包

字典解包后,只会把字典的key取出来,value则丢掉了。

a, b, c = {"a":1, "b":2, "c":3}# a:'a' b:'b' c:'c'
等号左右元素不等时的解包

在 Python2 中,如果等号左边变量的个数不等于右边可迭代对象中元素的个数,是不允许解包的。但在 python3 可以这么做了。这个特性可以在 PEP 3132 中看到。

这种语法就是在某个变量面前加一个星号,而且这个星号可以放在任意变量,每个变量都分配一个元素后,剩下的元素都分配给这个带星号的变量。

a, b, *c = [1, 2, 3, 4]# a:1 b:2 c:[3, 4]# *号可以在任意位置a, *b, c = [1, 2, 3, 4]# a:1 b:[2, 3] c:4
函数调用时的解包

元组,列表,字符串等传入函数时的解包:

def func(a, b, c):    print(a, b, c)func(*[1, 2, 3])func(*(1, 2, 3))func(*"123")# 以上三条语句都等同于func(1, 2, 3)

字典会以key=value的格式解包传入函数:

func(**{"a": 1, "b": 2, "c": 3})# 等同于func(a=1, b=2, c=3)

字典的key必须和形参名保持一致,否则会报错

从python3.5开始,在函数调用中可以有任意多个解包 *** 作:

func(*(1,), *[2], **{"c": 3})
表达式中的解包
*range(4), 4# (0, 1, 2, 3, 4)[*range(4), 4]# [0, 1, 2, 3, 4]{*range(4), 4}# {0, 1, 2, 3, 4}{"x": 1, "y": 2, **{"z": 3}}# {'x': 1, 'y': 2, 'z': 3}[*[1, 2, 3], *range(4, 8)]# [1, 2, 3, 4, 5, 6, 7]a = {"x": 1, "y": 2}b = {"z": 3}{**a, **b}# {'x': 1, 'y': 2, 'z': 3}
总结自动解包支持一切可迭代对象。python3中,支持更高级的解包 *** 作,用星号 *** 作使得等号左边的变量个数可以少于右边迭代对象中元素的个数。函数调用时,可以用 * 或者**解包可迭代对象,作为参数传递。python3.5,函数调用和表达式中可支持更多的解包 *** 作。 总结

以上是内存溢出为你收集整理的Python的解包全部内容,希望文章能够帮你解决Python的解包所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1186826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存