生成斐波那契数列中存在一个不太常见的赋值方式 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
网友评论