概述
序列解包
赋值语句见过很多,有的给变量赋值,还有给数据结构的一部分(如列表中的元素和切片、或字典项)赋值,但还有其它类型的赋值。
同时(并行)给多个变量赋值:
>>> x, y, z = 1, 2, 3
>>> print(1, 2, 3)
1 2 3
这种方式还可交换多个
>>> x, y, z = 1, 2, 3
>>> print(x, y, z)
1 2 3
>>> x, y = y, x
>>> print(x, y, z)
2 1 3
这里执行的操作成为序列解包(或可迭代对象解包):将一个序列(或任何可迭代的对象)解包,并将得到的值存储到一系列变量中。
>>> values = 1, 2, 3
>>> x, y, z = values
>>> x
1
这在使用返回元祖(或其它序列或可迭代对象)的函数或方法时很有用。假设要从字典中随机获取(删除)一个键-值对,可使用popitem,它会获取一个键-值对,并以元祖的方式返回。这样,就可直接将返回的元祖解包到俩个变量。
>>> phonebook = {'lilei':666, 'hanmeimei':888}
>>> name, phone = phonebook.popitem()
>>> name
'hanmeimei'
>>> phone
888
PS:要解包的序列包含的元素必须与你再等号左边列出的目标个数相同。否则会抛出异常。
>>> x, y, z = 1, 2, 3, 4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 3)
>>> x, y, z = 1, 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)
可使用星号运算符(*)来收集多余的值,这样无需确保值和变量的个数相同,
>>> a, b, *rest = 1, 2, 3, 4, 5
>>> rest
[3, 4, 5]
还可以将带*号的变量放在其他位置:
>>> a, *b, c = 1, 2, 3, 4, 5
>>> b
[2, 3, 4]
赋值语句的右边可以是任何类型的序列,但是带*号的变量最终包含的总是一个列表。在变量和值的个数相同时亦如此:
>>> a, *b, c = 1, 2, 3
>>> b
[2]
链式赋值
链式赋值时一种快捷方式,用于将多个变量关联到同一个值。
>>> x = y = 'hello'
等价于
>>> y = 'hello'
>>> x = y
增强赋值
可以不编写代码x = x + 1,而将右边表达式中的运算符(这里是+)移到赋值运算符(=)的前面,从而写成 x += 1.这成为增强赋值,适用于所有的标准运算符。如 *、/、%等。
增强赋值也可用于其他的数据类型(只要使用的时双目运算符可用于这些数据类型)
>>> name = 'root'
>>> name += 'ubuntu'
>>> name
'rootubuntu'
>>> name *= 2
>>> name
'rootubunturootubuntu'
代码块
代码块是一组语句,可在满足条件时执行(if语句),可执行多次(循环),等等,代码块是通过缩进代码来创建的。
在同一个代码中,各行代码的缩进量必须相同。
在Python中,使用冒号(:)指出接下来是一个代码块,并将该代码块的每行代码都缩进相同的程度。
当缩进量与之前相同时,该代码块就到此结束了。
转载于:https://www.cnblogs.com/kongzhou/p/9020701.html
最后
以上就是会撒娇方盒为你收集整理的六、赋值魔法与代码块的全部内容,希望文章能够帮你解决六、赋值魔法与代码块所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复