最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python變量賦值與引用之對(duì)象是否可變?cè)斀?/h1>
 更新時(shí)間:2025年05月21日 10:47:57   作者:牛頓編程  
Python的變量賦值是一個(gè)復(fù)雜的過程,涉及到內(nèi)存分配、引用計(jì)數(shù)、數(shù)據(jù)類型和深淺拷貝等多個(gè)方面,這篇文章主要介紹了Python變量賦值與引用之對(duì)象是否可變的相關(guān)資料,需要的朋友可以參考下

概述

在Python中,變量賦值的機(jī)制涉及到對(duì)象的引用和對(duì)象的可變性。變量名只是對(duì)象的引用,而不是直接存儲(chǔ)數(shù)據(jù)。因此,變量ab賦值后的行為差異,取決于兩個(gè)因素:

  • 對(duì)象是否可變(Mutable/Immutable)。
  • 修改操作的類型(直接修改對(duì)象內(nèi)容,還是重新賦值變量)。

1. 不可變對(duì)象(Immutable Objects)

不可變對(duì)象的值一旦創(chuàng)建,就不能修改其內(nèi)容,例如:

  • 整數(shù)(int
  • 字符串(str
  • 元組(tuple
  • 布爾值(bool)等。

場(chǎng)景:修改變量的新賦值

a = 5         # a指向整數(shù)對(duì)象5
b = a         # b也指向同一個(gè)整數(shù)對(duì)象5

a = 6         # 此時(shí)a指向新的整數(shù)對(duì)象6,但b仍指向5

print(b)      # 輸出5

原因

  • 賦值操作 b = a 時(shí),僅復(fù)制引用,使得 a 和 b 都指向同一個(gè)對(duì)象(初始是5)。
  • 當(dāng) a = 6 時(shí),a 的引用被更新為指向新對(duì)象6,而 b 仍然指向原對(duì)象5。
  • 不可變對(duì)象無法被修改內(nèi)容,只能重新創(chuàng)建新對(duì)象,因此 b 不會(huì)變化。

場(chǎng)景:嘗試直接修改對(duì)象內(nèi)容(無效)

a = "hello"   # a指向字符串"hello"
b = a         # b也指向相同的字符串對(duì)象

# 嘗試修改字符串內(nèi)容(但不可變對(duì)象不允許此操作)
a[0] = "H"    # 報(bào)錯(cuò):'str' object does not support item assignment

結(jié)果:此操作根本無法執(zhí)行,因?yàn)樽址遣豢勺兊摹?/p>

2. 可變對(duì)象(Mutable Objects)

可變對(duì)象的值可以在創(chuàng)建后被修改,例如:

  • 列表(list
  • 字典(dict
  • 集合(set
  • 自定義類實(shí)例等。

場(chǎng)景:直接修改對(duì)象內(nèi)容

a = [1, 2]    # a指向列表[1, 2]
b = a         # b指向同一個(gè)列表對(duì)象

a.append(3)   # 修改列表內(nèi)容,原列表變?yōu)閇1, 2, 3]

print(b)      # 輸出[1, 2, 3]

原因

  • a 和 b 指向同一個(gè)列表對(duì)象。
  • append() 方法直接修改了該對(duì)象的內(nèi)部?jī)?nèi)容,因此兩個(gè)變量看到的都是同一個(gè)被修改后的對(duì)象。

場(chǎng)景:修改變量的引用(不影響對(duì)方)

a = [1, 2]
b = a

a = [3, 4]    # a的引用被更新為新列表[3,4],但b仍指向原列表[1,2]

print(b)      # 輸出[1, 2]

原因

  • a = [3,4] 是一個(gè)新的賦值操作,直接改變了a的引用,使其指向新對(duì)象,而b未被修改,依然指向原列表。

3. 核心總結(jié)

情況行為差異原因
修改對(duì)象內(nèi)容(可變對(duì)象)a 和 b 指向同一個(gè)對(duì)象,修改內(nèi)容會(huì)影響雙方。
直接重新賦值變量(任何對(duì)象)a 的引用指向新對(duì)象,而 b 的引用未變,因此 b 的值不受影響。
嘗試修改不可變對(duì)象的內(nèi)容不可變對(duì)象無法被修改,只能生成新對(duì)象,原對(duì)象的引用不會(huì)改變。因此 b 不變。

4. 如何避免混淆

  • 不可變對(duì)象:賦值后的變量如果像“修改了 a,b 不變”,這是因?yàn)閷?shí)際是生成了新對(duì)象。
  • 可變對(duì)象:賦值后的變量如果像“修改了 a,b 也變”,是因?yàn)閮勺兞恐赶蛲粋€(gè)對(duì)象,修改內(nèi)容會(huì)影響雙方。

若希望二者獨(dú)立

  • 對(duì)可變對(duì)象使用深拷貝或淺拷貝
    import copy
    b = copy.deepcopy(a)  # 完全獨(dú)立的副本
    

示例表格

示例代碼是否修改對(duì)象內(nèi)容a 的值b 的值
a = 5; b = a; a = 665
a = [1]; b = a; a[0] = 2是(修改可變對(duì)象)[2][2]
a = [1]; b = a; a = [2][2][1]
`a = “str”; b = a; a += “1”否(生成新對(duì)象)"str1""str"

關(guān)鍵點(diǎn):

  • 賦值是引用的復(fù)制,b = a 僅讓兩個(gè)變量指向同一個(gè)對(duì)象。
  • 修改內(nèi)容 vs 重新賦值
    • 修改內(nèi)容:影響所有指向該對(duì)象的變量。
    • 重新賦值:僅修改當(dāng)前變量的引用,不影響其他變量。

總結(jié) 

到此這篇關(guān)于Python變量賦值與引用之對(duì)象是否可變的文章就介紹到這了,更多相關(guān)Python對(duì)象是否可變內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python的OpenCV模塊識(shí)別滑動(dòng)驗(yàn)證碼的缺口(推薦)

    使用Python的OpenCV模塊識(shí)別滑動(dòng)驗(yàn)證碼的缺口(推薦)

    這篇文章主要介紹了使用Python的OpenCV模塊識(shí)別滑動(dòng)驗(yàn)證碼的缺口,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Python實(shí)現(xiàn)批量下載文件的代碼詳解

    Python實(shí)現(xiàn)批量下載文件的代碼詳解

    下載文件是我們?cè)谌粘9ぷ髦谐3R龅囊患虑?當(dāng)我們需要從互聯(lián)網(wǎng)上批量下載大量文件時(shí),手動(dòng)一個(gè)一個(gè)去下載顯然不夠高效,為了解決這個(gè)問題,我們可以使用Python編寫一個(gè)批量下載文件的腳本,讓它自動(dòng)幫我們下載文件,下面小編給大家詳細(xì)介紹一下
    2025-05-05
  • Python實(shí)現(xiàn)ping指定IP的示例

    Python實(shí)現(xiàn)ping指定IP的示例

    今天小編就為大家分享一篇Python實(shí)現(xiàn)ping指定IP的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python列表的構(gòu)造方法list()

    python列表的構(gòu)造方法list()

    這篇文章主要介紹了python列表的構(gòu)造方法list(),python中沒有數(shù)組這個(gè)概念,與之相應(yīng)的是列表,本篇文章就來說說列表這個(gè)語(yǔ)法,下面文章詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • 使用Python實(shí)現(xiàn)圖像有效壓縮的方法

    使用Python實(shí)現(xiàn)圖像有效壓縮的方法

    在數(shù)字時(shí)代,圖像作為信息傳遞的重要媒介,在網(wǎng)頁(yè)設(shè)計(jì)、移動(dòng)應(yīng)用和多媒體制作中扮演著不可或缺的角色,本文將詳細(xì)介紹如何使用Python,一個(gè)功能強(qiáng)大且易于學(xué)習(xí)的編程語(yǔ)言,來實(shí)現(xiàn)圖像的有效壓縮,感興趣的朋友可以參考下
    2024-03-03
  • python regex庫(kù)實(shí)例用法總結(jié)

    python regex庫(kù)實(shí)例用法總結(jié)

    在本篇內(nèi)容里小編給大家整理了關(guān)于python regex庫(kù)實(shí)例用法總結(jié)內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。
    2021-01-01
  • python實(shí)現(xiàn)windows壁紙定期更換功能

    python實(shí)現(xiàn)windows壁紙定期更換功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)windows壁紙定期更換功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 教你在pycharm中使用tensorflow的方法

    教你在pycharm中使用tensorflow的方法

    當(dāng)前使用的是anaconda的3.8版本,無法正常下載tensorflow包,需要構(gòu)建虛擬環(huán)境使用3.7及以下的解釋器才可以,如何解決這個(gè)問題呢,下面小編給大家?guī)砹巳绾卧趐ycharm中使用tensorflow,感興趣的朋友參考下吧
    2021-11-11
  • Python常用知識(shí)點(diǎn)匯總

    Python常用知識(shí)點(diǎn)匯總

    這篇文章主要介紹了Python常用知識(shí)點(diǎn)匯總,包括Set集合,函數(shù),深入拷貝,淺入拷貝,需要的朋友可以參考下
    2016-05-05
  • Python操作MongoDB的教程詳解(插,查,改,排,刪)

    Python操作MongoDB的教程詳解(插,查,改,排,刪)

    MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。本文將詳細(xì)和大家聊聊Python操作MongoDB的方法,需要的可以參考一下
    2022-09-09

最新評(píng)論

堆龙德庆县| 河津市| 揭东县| 康平县| 逊克县| 综艺| 长丰县| 滦南县| 上高县| 五大连池市| 乡城县| 友谊县| 普安县| 焉耆| 朝阳市| 乌兰县| 淄博市| 象州县| 大宁县| 惠安县| 富阳市| 两当县| 青海省| 林甸县| 沈丘县| 鸡西市| 神农架林区| 阿拉善盟| 溧阳市| 中江县| 大方县| 广汉市| 赤城县| 伊吾县| 准格尔旗| 应用必备| 红桥区| 郴州市| 泸州市| 二连浩特市| 赞皇县|