python中連續賦值遇到的問題

在學習生成器的時候做了一個生成斐波那契數列的練習,下面是練習的代碼:

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章