【a, b = b, a +b】Python

2020-04-08  本文已影响0人  RayRaymond

生成斐波那契数列中存在一个不太常见的赋值方式 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 = bb = a + b

过程拆解

先计算 = 左边的内容,也就是 ba + b。然后再把结果赋值给 ab
这其中的赋值是通过元组 tuple 拆分完成的。比如在 a, b = b, a 中,拆分元组(b,a)分别赋值给 ab 完成 a b 的交换。

总结

a, b = b, a + b

可以等效为:

temp = a + b 
a = b
b = temp
上一篇下一篇

猜你喜欢

热点阅读