一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python 不可變對(duì)象真的不可變嗎

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-11-03 11:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在日常的學(xué)習(xí)和工作中,經(jīng)常會(huì)遇到"不可變對(duì)象"的問(wèn)題,但是隨著接觸Python這門語(yǔ)言的時(shí)間越來(lái)越多,遇到的坑越來(lái)越奇怪。我不禁產(chǎn)生了一個(gè)疑問(wèn):不可變對(duì)象真的不可變嗎?

我們知道元組就是"不可變對(duì)象",當(dāng)你想嘗試給一個(gè)元組賦值的時(shí)候,它會(huì)報(bào)錯(cuò):

圖片

請(qǐng)注意報(bào)錯(cuò)的語(yǔ)言: "does not support item** assignment** ", 元組對(duì)象不支持賦值操作。

例1

讓我們來(lái)看看下面這樣的操作:

圖片

盡管報(bào)了一個(gè)錯(cuò),但是它變量的值已經(jīng)被改變了。

原因

其實(shí),這里主要是因?yàn)?+= 操作對(duì)于“不可變對(duì)象”會(huì)產(chǎn)生新的變量并綁定到原有變量上。但是又由于+=中的"="號(hào),執(zhí)行了一次對(duì)元組對(duì)象的賦值操作,這是不允許的,因此報(bào)了錯(cuò),但新的對(duì)象已經(jīng)被綁定到了原有變量中,因此我們可以看到變量的值發(fā)生了改變。

例2

還有一種情況是這樣的:

圖片

這里完全沒有報(bào)錯(cuò),為什么呢?因?yàn)閍ppend并不涉及到賦值操作,元組只是不允許賦值,并沒有不允許append和extend啊,所以稱元組為“不可變對(duì)象” 實(shí)在是太不嚴(yán)謹(jǐn)了!

深一點(diǎn)

其實(shí)如果你知道元組中存放的是元素所對(duì)應(yīng)的地址(ID),就好理解多了,append和extend僅僅是修改了列表的元素,而列表本身的ID并沒有發(fā)生變化,只有當(dāng)賦值操作執(zhí)行的時(shí)候,ID才會(huì)發(fā)生變化,而這種情況是元組不允許發(fā)生的。

圖片

因此,要避免踩上這些坑,忘掉元組是“不可變對(duì)象”這樣不嚴(yán)謹(jǐn)?shù)谋硎鲂问剑ó?dāng)然從地址的角度來(lái)講它是對(duì)的,元組內(nèi)部所有元素的ID都不可變),請(qǐng)這樣記: 元組是不可賦值對(duì)象 。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    614

    瀏覽量

    28964
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86769
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    #Python3教程 區(qū)分可變不可變對(duì)象

    編程語(yǔ)言python
    電子技術(shù)那些事兒
    發(fā)布于 :2022年08月29日 21:24:39

    [8.4.2]--8.4.2可變對(duì)象不可變對(duì)象

    python
    jf_75936199
    發(fā)布于 :2023年03月13日 17:21:38

    Python語(yǔ)言基礎(chǔ):可變類型與不可變類型(1)#Python語(yǔ)言基礎(chǔ)

    編程語(yǔ)言python
    學(xué)習(xí)電子
    發(fā)布于 :2023年04月06日 16:08:55

    Python語(yǔ)言基礎(chǔ):可變類型與不可變類型(2)#Python語(yǔ)言基礎(chǔ)

    編程語(yǔ)言python
    學(xué)習(xí)電子
    發(fā)布于 :2023年04月06日 16:10:16

    201. Python函數(shù)提高:13.19 可變不可變類型

    python
    充八萬(wàn)
    發(fā)布于 :2023年07月11日 20:04:12

    Python中的列表:可變性,實(shí)用程序和可訪問(wèn)性

    does not support item assignment  因此,即使將不可變對(duì)象存儲(chǔ)在列表中,python也不會(huì)更改對(duì)象的屬性?! ×斜砜梢跃哂腥魏螖?shù)據(jù)類型作為其成員,無(wú)
    發(fā)表于 08-12 18:03

    ExaGrid榮獲“年度企業(yè)備份硬件供應(yīng)商”和“年度不可變存儲(chǔ)公司”兩項(xiàng)大獎(jiǎng)

    超大型系統(tǒng)。ExaGrid提供唯一具有非面向網(wǎng)絡(luò)的層級(jí)、延遲刪除功能以及不可變對(duì)象以從勒索軟件攻擊中恢復(fù)的雙層備份存儲(chǔ)方案,因此我們特別榮幸地獲得了‘年度不可變存儲(chǔ)公司’獎(jiǎng)?!盓xaGrid分層備份存儲(chǔ)
    發(fā)表于 10-14 12:04

    輸出電壓可變的高精度基準(zhǔn)電源電路

    (特征:高精度、電壓可變)類似REF-02C屬于高精度、輸出電壓不可變的基
    發(fā)表于 05-13 09:10 ?1302次閱讀
    輸出電壓<b class='flag-5'>可變</b>的高精度基準(zhǔn)電源電路

    java中string不可變的原因

    區(qū)分對(duì)象對(duì)象的引用 對(duì)于Java初學(xué)者, 對(duì)于String是不可變對(duì)象總是存有疑惑??聪旅娲a: String s = ABCabc;System .out.println( s =
    發(fā)表于 09-27 13:24 ?0次下載
    java中string<b class='flag-5'>不可變</b>的原因

    什么是不可變對(duì)象 不可變對(duì)象存儲(chǔ)可以抵御哪些威脅

    什么是不可變對(duì)象? 屬性變更時(shí)必須新建對(duì)象對(duì)象,如String,已有“String str=‘a(chǎn)bc’”,再次賦值“str=‘efg’”,此時(shí)新建一個(gè)String
    的頭像 發(fā)表于 09-19 11:44 ?2777次閱讀

    Linux發(fā)行版新秀:基于Ubuntu、系統(tǒng)核心 “不可變

    個(gè)不可變的操作系統(tǒng),系統(tǒng)的核心部分已被鎖定,以防止第三方應(yīng)用程序進(jìn)行不必要的更改和損壞,或引起錯(cuò)誤更新。
    的頭像 發(fā)表于 01-11 15:35 ?1244次閱讀

    python的深入使用

    可變對(duì)象是指,一個(gè)對(duì)象在不改變其引用的前提下,可以修改其所指向的地址中的值* 不可變對(duì)象是指,一個(gè)對(duì)象
    的頭像 發(fā)表于 02-16 15:49 ?753次閱讀
    <b class='flag-5'>python</b>的深入使用

    python字符串序列操作和不可變

    初識(shí)python字符串序列操作和不可變性。python字符串序列操作為序列通用操作,python字符串不可變性是對(duì)字符串的操作不會(huì)改變?cè)甲?/div>
    的頭像 發(fā)表于 02-23 15:01 ?1099次閱讀

    Python字典組成的數(shù)組如何進(jìn)行去重?

    因?yàn)槭褂胹et去重的前提是該對(duì)象不可變對(duì)象,而字典是可變對(duì)象,因此無(wú)法直接使用該方法去重。
    的頭像 發(fā)表于 02-24 13:58 ?1239次閱讀
    <b class='flag-5'>Python</b>字典組成的數(shù)組如何進(jìn)行去重?

    python中tuple的用法

    Python中的元組(tuple)是一種不可變的有序集合。與列表(list)類似,元組可以存儲(chǔ)任意類型的數(shù)據(jù),但是元組一旦創(chuàng)建就不能被修改。在Python中,元組是使用圓括號(hào)進(jìn)行表示,其中的元素可以
    的頭像 發(fā)表于 11-21 16:27 ?1420次閱讀