序列解包:
赋值语句有很多,变量赋值、列表中的元素赋值、切片赋值、字典项赋值
同时给多个变量赋值
a, b, c = 1, 2, 3 print(a, b, c) # 1 2 3 # 交换变量的值 a, b = b, a print(a, b, c) # 2 1 3
序列解包(可迭代对象解包),将一个可迭代对象解包,得到的值存储到一系列变量
a = "num" x, y, z = a print(x, y, z) # n u m
假如要从字典随便获取(删除)一个键值对,可以使用popitem,会以元组的形式返回,我们可以直接对元组解包到两个变量
d = {"name": "shuai", "age": 23} key, value = d.popitem() print(key, value) # age 23
注意解包的元素个数与接收的变量必须相同,否则会引号异常
d = {"name": "shuai", "age": 23} key, value, name= d.popitem() # ValueError: not enough values to unpack (expected 3, got 2)
可以使用*来收集对于的值,这样无需保证值和变量个数相同,带*的变量总是一个列表
a = [1, 2, 3, 4,5] x, y, *z = a print(z) # [3, 4, 5] s, *d, f = a print(d) # [2, 3, 4] str = "shuai" j, *k, l, m = str print(j, k, l, m) # s ['h', 'u'] a i
链式赋值:
赋值的快捷方式,将多个变量关联到一个值
a = b = c = 1 print(a,b,c) # 1 1 1
增强赋值:
将+移动到=前面,适用于所有的标准运算符,可以让代码更紧凑、更简洁、可读性更强
x = x+1 # 可以写成 x += 1