本篇內(nèi)容介紹了“Python中的不可變對象真的不可變嗎”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了酒泉免費建站歡迎大家使用!
在日常的學習和工作中,經(jīng)常會遇到"不可變對象"的問題,但是隨著接觸Python這門語言的時間越來越多,遇到的坑越來越奇怪。我不禁產(chǎn)生了一個疑問:不可變對象真的不可變嗎?
我們知道元組就是"不可變對象",當你想嘗試給一個元組賦值的時候,它會報錯:
請注意報錯的語言: "does not support item assignment ", 元組對象不支持賦值操作。
讓我們來看看下面這樣的操作:
盡管報了一個錯,但是它變量的值已經(jīng)被改變了。
其實,這里主要是因為 += 操作對于“不可變對象”會產(chǎn)生新的變量并綁定到原有變量上。但是又由于+=中的"="號,執(zhí)行了一次對元組對象的賦值操作,這是不允許的,因此報了錯,但新的對象已經(jīng)被綁定到了原有變量中,因此我們可以看到變量的值發(fā)生了改變。
還有一種情況是這樣的:
這里完全沒有報錯,為什么呢?因為append并不涉及到賦值操作,元組只是不允許賦值,并沒有不允許append和extend啊,所以稱元組為“不可變對象” 實在是太不嚴謹了!
深一點
其實如果你知道元組中存放的是元素所對應的地址(ID),就好理解多了,append和extend僅僅是修改了列表的元素,而列表本身的ID并沒有發(fā)生變化,只有當賦值操作執(zhí)行的時候,ID才會發(fā)生變化,而這種情況是元組不允許發(fā)生的。
因此,要避免踩上這些坑,忘掉元組是“不可變對象”這樣不嚴謹?shù)谋硎鲂问剑ó斎粡牡刂返慕嵌葋碇v它是對的,元組內(nèi)部所有元素的ID都不可變),請這樣記:元組是不可賦值對象。
“Python中的不可變對象真的不可變嗎”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質量的實用文章!
本文名稱:Python中的不可變對象真的不可變嗎
轉載源于:http://chinadenli.net/article8/jhhgop.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、企業(yè)建站、定制開發(fā)、微信公眾號、云服務器、響應式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)