为什么这段代码会打印斐波纳契系列?

时间:2016-07-19 02:36:00

标签: python python-3.x while-loop do-while

所以我的问题是关于“a, b=b, a+b”行以及“a,b = 0,1”行

这些线是什么意思,他们在做什么?

def fib2(n):
    result = []
    a, b = 0, 1
    while a < n:
        result.append(a)
        a, b = b, a+b
    return result

2 个答案:

答案 0 :(得分:0)

a, b=b, a+b多次分配语句。在这样的陈述中,右侧的表达式都被评估 在任何任务发生之前。右侧表达式从左到右进行评估。

a,b=0,1的情况类似,其中a获取0b获得1

答案 1 :(得分:-1)

a, b=b, a+b   # is described as

temp = a
a = b
b= temp + b

如果你在shell中查看a,b = 0,1

In [37]: a,b = 0,1

In [38]: a,b
Out[38]: (0, 1)

In [40]: type((a, b))
Out[40]: tuple

In [41]: a
Out[41]: 0

In [42]: b
Out[42]: 1

所以它只是将变量赋值给元组值