python-打包和解包
基本概念
解包相当于是把列表,元组之类的元素拆成一个一个元素,而打包则是反向的过程,比如
# 1
t = (4, 2, 3)
a, b, c = t
# a=4, b=2, c=3
# 2
l = [4, 2, 3]
a, b, c = l
# a=1, b=2, c=3
# 3
d = {"d": 1, "b": 2, "c": 3}
a, b, c = d
# a='d', b='b', c='c'
# 4
s = {4, 2, 3}
a, b, c = s
# a=2, b=3, c=4
# 4
a, b = l
这四组中前三组都是对的,最后一组错误的原因为,当使用这种解包的方式时,元素个数必须和集合类元素的长度相同。需要注意的是对字典进行解包的时候,是对键值进行拆解
* 和 **
python 中的 *
和 **
为解包和打包提供了一些便捷的操作,他们都有两种语义
打包
当这两个符号出现在左侧时,起到打包的作用。
*
的打包:
a, *b = [1, 2, 3]
# a=1, b=[2,3]
a, *b = (1, 2, 3)
# a=1, b=[2,3]
a, *b, c = [1, 2, 3, 4]
# a=1, b=[2,3], c=4
这种方式里,首先将给确认的元素赋值,然后剩下的元素以 列表 的形式打包。另外,
**
打包是将若干个 key=value
打包成字典,比如:
def func(**kwargs):
for k, v in kwargs.items():
print(k, v)
func(a=1,b=2)
解包
当这两个符号出现在右侧时,起到解包的作用。
*
的解包:
l = [1, 2, 3]
print(*l)
# 1, 2, 3
**
的解包能将字典拆成 key=value
的形式,下面是利用这个的一种函数的传参方法
def func(a, b):
pass
d = {"a": 1, "b": 2}
func(**d)
References
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruoy's Blog!
评论