2016-07-19 121 views
-4

所以我的问题是关于行“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 

回答

0

a, b=b, a+b多任务声明。在这样的陈述中,右侧的表达式在任何任务发生之前首先被评估为 。右侧表达式从左到右进行评估。

类似的情况为a,b=0,1,其中a得到0b得到1

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

temp = a 
a = b 
b= temp + b 

,如果你在外壳看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 

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