您好,登錄后才能下訂單哦!
前言
今天無意中發現在python中的一個多重賦值的小問題,自己一開始是比較簡單化的理解了這個多重賦值操作的概念,所以導致在一道實現斐波那契數列的代碼中,發現了自己的問題,順便記錄下吧,當作是學習總結。
首先是python的多重賦值操作,先用一個直觀的代碼來看:
a,b = 0,1
上述就是一個最簡單的多重賦值操作,這個賦值操作的作用是將賦值操作 = 右側的對象逐一賦給左側的對象,所以這個操作結果是a對象的值為0,b對象的值為1,這點很好理解。
然鵝,如果是下列的代碼呢?
# Fibonacci series: a, b = 0, 1 while b < 10: print b a, b = b, a + b
顯然,運行結果是正確的:
1
1
2
3
5
8
那么如果將代碼改成這樣呢?
#Fibonacci series: a = 0 b = 1 while b < 10: print b a = b b = a + b
運行結果是:
1
2
4
8
顯然不正確。。。。
其實問題在于多重賦值操作是一個等號右邊表達式會在賦值操作進行之前被完全解析的過程。也就是說,對于
a, b = 0, 1
變量a和b是同時獲得新的值0和1。而對于
a, b = b, a + b
說明等號右邊的表達式在賦值之前首先被完全解析。右側表達式是從左到右計算的。在賦值完成之前,a+b的操作是已經完成了表達式的計算結果了的,所以,如果將 a,b = b, a+b 等同于 a = b,b = a+b 是完全不正確的。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。