流畅的python和cookbook学习笔记(二)

时间:2022-06-26 07:20:05

1.元组拆包和解压序列赋值

  任何的序列 (或者是可迭代对象) 可以通过一个简单的赋值语句解压并赋值给多个 变量。唯一的前提就是变量的数量必须跟序列元素的数量是一样的。

  1.平行赋值:

>>> x = (1, 2) 
>>> a, b = x # 元组拆包
>>> a
1
>>> b
2

  2.以用 * 运算符把一个可迭代对象拆开作为函数的参数:

>>> divmod(20, 8)  # 20求8的余,2 * 8 + 4 == 20
(
2, 4)
>>> t = (20, 8)
>>> divmod(*t)
(
2, 4)
>>> quotient, remainder = divmod(*t)
>>> quotient, remainder # 商和余数
(
2, 4)

  3.函数中用 *args 来获取不确定数量的参数:

>>> a, b, *rest = range(5)
>>> a, b, rest
(0,
1, [2, 3, 4])
>>> a, b, *rest = range(3)
>>> a, b, rest
(0,
1, [2])
>>> a, b, *rest = range(2)
>>> a, b, rest
(0,
1, [])

  4.在平行赋值中,* 前缀只能用在一个变量名前面,但是这个变量可以出现在赋值表达式的任意位置:

>>> a, *body, c, d = range(5) 
>>> a, body, c, d
(0, [
1, 2], 3, 4)
>>> *head, b, c, d = range(5)
>>> head, b, c, d
([0,
1], 2, 3, 4)

.