在學習生成器的時候做了一個生成斐波那契數列的練習,下面是練習的代碼:
import sys
def fib(n):
a, b, count = 0, 1, 0
while 1:
if count >= n:
return
yield a
a, b, count = b, a + b, count+1
f = fib(10)
while 1:
try:
print(next(f))
except StopIteration:
sys.exit()
在進行連續賦值的時候產生了一個疑問:a, b, count =b, a + b, count+1,如果先把b的值賦值給a的話,再對b賦值時a+b中a的值不就錯誤了嗎?
但是這麼寫是沒有問題的,每個變量的賦值是不會互相影響的。我是這樣理解連續賦值的過程的:生成三個臨時變量tmp1,tmp2,tmp3,另tmp1=b,tmp2=a+b,tmp3=count+1,最後再將臨時變量的值賦給先前的變量,結果爲a=tmp1,b=tmp2,count=tmp3.