生成斐波那契数列中存在一个不太常见的赋值方式 a, b = b, a+b
# Fibonacci series
def fib_loop_while(max):
a, b = 0, 1
while max > 0:
a, b = b, a + b
max -= 1
yield a
for i in fib_loop_while(10):
print(i)
在上面的代码中,a, b = b, a+b 并不能换成 a = b 和 b = a + b。
过程拆解
先计算 = 左边的内容,也就是 b 和 a + b。然后再把结果赋值给 a 和 b。
这其中的赋值是通过元组 tuple 拆分完成的。比如在 a, b = b, a 中,拆分元组(b,a)分别赋值给 a 和 b 完成 a b 的交换。
总结
a, b = b, a + b
可以等效为:
temp = a + b
a = b
b = temp










网友评论