2016-07-19 303 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 

所以它只是變量賦值給元組值