關(guān)于python多重賦值的小問(wèn)題
前言
今天無(wú)意中發(fā)現(xiàn)在python中的一個(gè)多重賦值的小問(wèn)題,自己一開(kāi)始是比較簡(jiǎn)單化的理解了這個(gè)多重賦值操作的概念,所以導(dǎo)致在一道實(shí)現(xiàn)斐波那契數(shù)列的代碼中,發(fā)現(xiàn)了自己的問(wèn)題,順便記錄下吧,當(dāng)作是學(xué)習(xí)總結(jié)。
首先是python的多重賦值操作,先用一個(gè)直觀(guān)的代碼來(lái)看:
a,b = 0,1
上述就是一個(gè)最簡(jiǎn)單的多重賦值操作,這個(gè)賦值操作的作用是將賦值操作 = 右側(cè)的對(duì)象逐一賦給左側(cè)的對(duì)象,所以這個(gè)操作結(jié)果是a對(duì)象的值為0,b對(duì)象的值為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í)問(wèn)題在于多重賦值操作是一個(gè)等號(hào)右邊表達(dá)式會(huì)在賦值操作進(jìn)行之前被完全解析的過(guò)程。也就是說(shuō),對(duì)于
a, b = 0, 1
變量a和b是同時(shí)獲得新的值0和1。而對(duì)于
a, b = b, a + b
說(shuō)明等號(hào)右邊的表達(dá)式在賦值之前首先被完全解析。右側(cè)表達(dá)式是從左到右計(jì)算的。在賦值完成之前,a+b的操作是已經(jīng)完成了表達(dá)式的計(jì)算結(jié)果了的,所以,如果將 a,b = b, a+b 等同于 a = b,b = a+b 是完全不正確的。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
詳解Python list和numpy array的存儲(chǔ)和讀取方法
這篇文章主要介紹了詳解Python list和numpy array的存儲(chǔ)和讀取方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Python環(huán)境下安裝PyGame和PyOpenGL的方法
這篇文章主要介紹了Python環(huán)境下安裝PyGame和PyOpenGL的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Python3實(shí)現(xiàn)二叉樹(shù)的最大深度
這篇文章主要介紹了Python3實(shí)現(xiàn)二叉樹(shù)的最大深度, 文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
python3中apply函數(shù)和lambda函數(shù)的使用詳解
本文主要介紹了python3中apply函數(shù)和lambda函數(shù)的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Python PySpider爬蟲(chóng)框架安裝使用教程
PySpider是一個(gè)Python編寫(xiě)的分布式網(wǎng)絡(luò)爬蟲(chóng)框架,它可以幫助開(kāi)發(fā)者快速構(gòu)建和部署爬蟲(chóng),并支持爬蟲(chóng)任務(wù)的分布式運(yùn)行,PySpider基于Twisted網(wǎng)絡(luò)框架和MongoDB數(shù)據(jù)庫(kù),具有高效、穩(wěn)定、易用等特點(diǎn),同時(shí)還提供了一套Web界面,可以方便地查看爬蟲(chóng)任務(wù)的運(yùn)行狀態(tài)和結(jié)果2023-11-11
使用tensorflow實(shí)現(xiàn)矩陣分解方式
今天小編就為大家分享一篇使用tensorflow實(shí)現(xiàn)矩陣分解方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
http請(qǐng)求 request失敗自動(dòng)重新嘗試代碼示例
這篇文章主要介紹了http請(qǐng)求 request失敗自動(dòng)重新嘗試代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Python?seaborn?barplot畫(huà)圖案例
這篇文章主要介紹了Python?seaborn?barplot畫(huà)圖案例,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07
python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)利用PyTorch進(jìn)行回歸運(yùn)算
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)利用PyTorch進(jìn)行回歸運(yùn)算的實(shí)現(xiàn)代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

