前言
今天無意中發現在python中的乙個多重賦值的小問題,自己一開始是比較簡單化的理解了這個多重賦值操作的概念,所以導致在一道實現斐波那契數列的**中,發現了自己的問題,順www.cppcns.com便記錄下吧,當作是學習總結。
首先是python的多重賦值操作,先用乙個直觀的**來看:
a,b = 0,1
上述就www.cppcns.com是乙個最簡單的多重賦值操作,這個賦值操作的作用是將賦值操作 = 右側的物件逐一賦給左側的物件,所以程式設計客棧這個操作結果是a物件的值為0,b物件的值為1,這點很好理解。
然鵝,如果是下列的**呢?
# fibonacci series:
www.cppcns.coma, b = 0, 1
while b < 10:
print b
a, b = b, a + b
顯然,執行結果是正確的:
11235
8那麼如果將**改成這樣呢?
#fibonacci series:
a = 0
b = 1
while b < 10:
程式設計客棧 print b
a = b
b = a + b
執行結果是:
1248顯然不正確。。。。
其實問題在於多重賦值操作是乙個等號右邊表示式會在賦值操作進行之前被完全解析的過程。也就是說,對於
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 是完全不正確的。
總結本文標題: 關於python多重賦值的小問題
本文位址:
python多重賦值技巧
多重賦值技巧是一種快捷方式,讓你在一行 中,用列表中的值為多個變數賦值。所以不必像這樣 cat fat black loud size cat 0 color cat 1 disposition cat 2 而是輸入下面的 cat fat black loud size,color,disposit...
python 多重賦值問題
多重賦值有兩種方式 一,變數賦值 右邊先完成計算,然後在賦值給左邊變數。x,y y,x y 等價於 m y n x y x m y n常用例項 資料交換 a,b 1,2 a,b b,a a 2 b 1二,列表等多重賦值 l 1,2,3 4 a,b,c,d l int,int,str,str變數個數必...
Python多重賦值技巧
1 多重賦值技巧是一種快捷方式,讓你在一行 中,用列表中的值為多個變數賦值。所以不必像這樣 entrepreneur jackma ponyma leijun alibaba entrepreneur 0 tencent entrepreneur 1 xiaomi entrepreneur 2 而可...