-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
所以我的問題是關於行「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
a, b=b, a+b
是多任務聲明。在這樣的陳述中,右側的表達式在任何任務發生之前首先被評估爲 。右側表達式從左到右進行評估。
類似的情況爲a,b=0,1
,其中a
得到0
和b
得到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
所以它只是變量賦值給元組值