首页 > 解决方案 > Python Fibonacci Generator,解释语法

问题描述

我找到了斐波那契生成器的 Python 代码,但并不完全理解。有人可以a, b = b, a + b特别解释一下吗?

a = int(input('Give amount: '))

def fib(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

print(list(fib(a))

它是如何工作的?

标签: pythonpython-3.x

解决方案


这行代码的工作原理是创建一个元组,然后对其进行解构以一次分配两个变量。结果是左侧 和 都分配了右侧表达式的结果,这些表达式是使用 和 的原始值a计算的。bab

右边的表达式b, a + b等价于(b, a + b),即它创建一个包含两个组件的元组。

左侧的赋值目标a, b相当于(a, b),即它同时赋值给两个变量,分别使用元组中两个分量的值。这称为解构赋值

这很方便,因为如果两个赋值是分开编写的,如下面的代码,那么它就不会产生预期的效果。第一行更改a了 的值,然后值将(错误地)用于计算b

# WRONG!
a = b
b = a + b

推荐阅读