溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

關(guān)于python多重賦值的小問題

發(fā)布時(shí)間:2020-10-10 12:38:18 來源:腳本之家 閱讀:168 作者:JEWELCCL 欄目:開發(fā)技術(shù)

前言

今天無意中發(fā)現(xiàn)在python中的一個(gè)多重賦值的小問題,自己一開始是比較簡單化的理解了這個(gè)多重賦值操作的概念,所以導(dǎo)致在一道實(shí)現(xiàn)斐波那契數(shù)列的代碼中,發(fā)現(xiàn)了自己的問題,順便記錄下吧,當(dāng)作是學(xué)習(xí)總結(jié)。

首先是python的多重賦值操作,先用一個(gè)直觀的代碼來看:

a,b = 0,1 

上述就是一個(gè)最簡單的多重賦值操作,這個(gè)賦值操作的作用是將賦值操作 = 右側(cè)的對象逐一賦給左側(cè)的對象,所以這個(gè)操作結(jié)果是a對象的值為0,b對象的值為1,這點(diǎn)很好理解。

然鵝,如果是下列的代碼呢?

# Fibonacci series:
a, b = 0, 1
while b < 10:
 print b
 a, b = b, a + b 

顯然,運(yùn)行結(jié)果是正確的:

1
1
2
3
5
8

那么如果將代碼改成這樣呢?

#Fibonacci series:
a = 0
b = 1
while b < 10:
 print b
 a = b
 b = a + b

運(yùn)行結(jié)果是:

1
2
4
8

顯然不正確。。。。

其實(shí)問題在于多重賦值操作是一個(gè)等號右邊表達(dá)式會在賦值操作進(jìn)行之前被完全解析的過程。也就是說,對于

a, b = 0, 1

變量a和b是同時(shí)獲得新的值0和1。而對于

a, b = b, a + b

說明等號右邊的表達(dá)式在賦值之前首先被完全解析。右側(cè)表達(dá)式是從左到右計(jì)算的。在賦值完成之前,a+b的操作是已經(jīng)完成了表達(dá)式的計(jì)算結(jié)果了的,所以,如果將 a,b = b, a+b 等同于 a = b,b = a+b 是完全不正確的。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI