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

Python中可變對(duì)象和不可變對(duì)象的使用詳解

 更新時(shí)間:2025年12月29日 09:31:30   作者:Peter-Lu  
本文詳細(xì)介紹了Python中可變對(duì)象(如列表、字典和集合)與不可變對(duì)象(如字符串、整數(shù)和元組)的特性,以及它們?cè)诤瘮?shù)傳遞中的行為差異,感興趣的可以了解一下

最近面試被問(wèn)到了這個(gè)問(wèn)題,寫(xiě)個(gè)帖子解釋一下可變對(duì)象和不可變對(duì)象

1. 對(duì)象可變性簡(jiǎn)介

在Python中,每個(gè)變量都是一個(gè)對(duì)象,每個(gè)對(duì)象都具有其創(chuàng)建后是否允許修改的屬性,這種特性稱為對(duì)象的可變性。它影響對(duì)象在傳遞給函數(shù)、用于表達(dá)式或存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中時(shí)的行為。

定義

  • 可變對(duì)象:創(chuàng)建后可以改變的對(duì)象。例子包括列表、字典、集合和用戶定義的對(duì)象。
  • 不可變對(duì)象:一旦創(chuàng)建后不允許被修改的對(duì)象。例子包括整數(shù)、浮點(diǎn)數(shù)、字符串、元組和凍結(jié)集合。

2. 不可變對(duì)象的特性

不可變對(duì)象包括數(shù)字(整數(shù)和浮點(diǎn)數(shù))、字符串、元組等。這些對(duì)象的共同特點(diǎn)是一旦創(chuàng)建,它們的內(nèi)存中的數(shù)據(jù)不可改變。

2.1 字符串

字符串是不可變對(duì)象的典型例子。當(dāng)嘗試修改字符串的內(nèi)容時(shí),Python并不是修改原有的字符串,而是創(chuàng)建一個(gè)新的字符串對(duì)象。

str1 = "Hello"
# 嘗試更改字符串的內(nèi)容
str2 = str1.replace('H', 'J')
print(str1)  # 輸出 Hello,原字符串未改變
print(str2)  # 輸出 Jello,創(chuàng)建了一個(gè)新字符串

2.2 整數(shù)和浮點(diǎn)數(shù)

整數(shù)和浮點(diǎn)數(shù)也是不可變對(duì)象。每次對(duì)數(shù)字進(jìn)行修改,實(shí)際上是生成了一個(gè)新的數(shù)字對(duì)象。

x = 10
y = x
x = x + 1
print(y)  # 輸出 10,y 仍然指向原來(lái)的整數(shù)對(duì)象
print(x)  # 輸出 11,x 現(xiàn)在指向一個(gè)新的整數(shù)對(duì)象

2.3 元組

元組的不可變性示例

不能直接更改元組中的元素。如果嘗試修改元組中的某個(gè)元素,Python 將拋出一個(gè)錯(cuò)誤。

tup = (1, 2, 3)
try:
    tup[0] = 100  # 嘗試修改元組的第一個(gè)元素
except TypeError as e:
    print(e)  # 輸出錯(cuò)誤信息(TypeError)

元組內(nèi)含可變對(duì)象

盡管元組本身是不可變的,但如果元組中包含可變對(duì)象,如列表,這些可變對(duì)象內(nèi)部的內(nèi)容是可以被修改的。這種情況下,元組的不可變性只適用于頂層結(jié)構(gòu),不影響內(nèi)部元素的可變性。

tup_with_list = (1, [2, 3], 4)
tup_with_list[1].append(5)
print(tup_with_list)  # 輸出 (1, [2, 3, 5], 4)

3. 可變對(duì)象的特性

可變對(duì)象如列表、字典和集合允許在對(duì)象創(chuàng)建后修改其內(nèi)容。

3.1 列表

列表是最常見(jiàn)的可變對(duì)象之一??梢栽诹斜碇刑砑印h除或更改元素,而無(wú)需創(chuàng)建一個(gè)新的列表對(duì)象。

lst = [1, 2, 3]
lst.append(4)
print(lst)  # 輸出 [1, 2, 3, 4],列表內(nèi)容被修改

3.2 字典

字典也是一個(gè)可變對(duì)象??梢噪S時(shí)添加、刪除或修改字典中的鍵值對(duì)。

dic = {'a': 1, 'b': 2}
dic['c'] = 3
print(dic)  # 輸出 {'a': 1, 'b': 2, 'c': 3},字典已更新

3.3 集合

集合的可變性示例

創(chuàng)建一個(gè)簡(jiǎn)單的集合,演示如何向集合中添加和刪除元素。

# 創(chuàng)建一個(gè)初始集合
my_set = {1, 2, 3}
print("初始集合:", my_set)

# 添加、移除元素
my_set.add(4)
my_set.remove(2)
print("操作后的集合:", my_set)

集合的操作限制

盡管集合是可變的,但也有一些操作上的限制。例如,集合只能包含不可變(可哈希)的對(duì)象。因此不能將列表或另一個(gè)集合作為元素添加到集合中。

nested_set = {1, 2, 3}
try:
    nested_set.add([4, 5, 6])  # 嘗試添加列表到集合中
    # nested_set.add({7, 8, 9})  # 嘗試添加另一個(gè)集合到集合中
except TypeError as e:
    print(e)  # 輸出錯(cuò)誤信息

4. 函數(shù)中的對(duì)象傳遞

理解Python中的參數(shù)傳遞方式——按引用傳遞(實(shí)際上是對(duì)象的引用地址傳遞)——是理解可變與不可變對(duì)象的關(guān)鍵。

4.1 不可變對(duì)象的傳遞

向函數(shù)傳遞不可變對(duì)象時(shí),對(duì)該對(duì)象的任何修改都不會(huì)影響原始對(duì)象,因?yàn)閷?shí)際上是創(chuàng)建了一個(gè)新的對(duì)象。

def update_number(n):
    n += 10

x = 5
update_number(x)
print(x)  # 輸出 5,原始值未改變

4.2 可變對(duì)象的傳遞

相反,傳遞可變對(duì)象時(shí),函數(shù)內(nèi)對(duì)對(duì)象的修改將影響原始對(duì)象。

def update_list(lst):
    lst.append(4)

my_list = [1, 2, 3]
update_list(my_list)
print(my_list)  # 輸出 [1, 2, 3, 4],原始列表被修改

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

相關(guān)文章

  • 十個(gè)Python經(jīng)典小游戲的代碼合集

    十個(gè)Python經(jīng)典小游戲的代碼合集

    這篇文章主要為大家分享十個(gè)Python經(jīng)典的小游戲代碼,非常適合Python初學(xué)者練手。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-05-05
  • 基于Python實(shí)現(xiàn)身份證信息識(shí)別功能

    基于Python實(shí)現(xiàn)身份證信息識(shí)別功能

    身份證是用于證明個(gè)人身份和身份信息的官方證件,在現(xiàn)代社會(huì)中,身份證被廣泛應(yīng)用于各種場(chǎng)景,如就業(yè)、教育、醫(yī)療、金融等,它包含了個(gè)人的基本信息,本文給大家介紹了如何基于Python實(shí)現(xiàn)身份證信息識(shí)別功能,感興趣的朋友可以參考下
    2024-01-01
  • ssh批量登錄并執(zhí)行命令的python實(shí)現(xiàn)代碼

    ssh批量登錄并執(zhí)行命令的python實(shí)現(xiàn)代碼

    有個(gè)任務(wù)是在這些電腦上執(zhí)行某些命令,者說(shuō)進(jìn)行某些操作,比如安裝某些軟件,拷貝某些文件,批量關(guān)機(jī)等。如果一臺(tái)一臺(tái)得手工去操作,費(fèi)時(shí)又費(fèi)力,如果要進(jìn)行多個(gè)操作就更麻煩啦
    2012-05-05
  • python網(wǎng)絡(luò)編程之UDP通信實(shí)例(含服務(wù)器端、客戶端、UDP廣播例子)

    python網(wǎng)絡(luò)編程之UDP通信實(shí)例(含服務(wù)器端、客戶端、UDP廣播例子)

    UDP,用戶數(shù)據(jù)報(bào)傳輸協(xié)議,它位于TCP/IP協(xié)議的傳輸層,是一種無(wú)連接的協(xié)議,它發(fā)送的報(bào)文不能確定是否完整地到達(dá)了另外一端
    2014-04-04
  • Python實(shí)現(xiàn)通訊錄功能

    Python實(shí)現(xiàn)通訊錄功能

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python?scatter繪制散點(diǎn)圖

    python?scatter繪制散點(diǎn)圖

    這篇文章主要介紹了python?scatter繪制散點(diǎn)圖,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • Python將list元素轉(zhuǎn)存為CSV文件的實(shí)現(xiàn)

    Python將list元素轉(zhuǎn)存為CSV文件的實(shí)現(xiàn)

    這篇文章主要介紹了Python將list元素轉(zhuǎn)存為CSV文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python使用tkinter調(diào)整label背景顏色的測(cè)試

    python使用tkinter調(diào)整label背景顏色的測(cè)試

    這篇文章主要介紹了python使用tkinter調(diào)整label背景顏色的測(cè)試方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • YOLOV5超參數(shù)介紹以及優(yōu)化策略

    YOLOV5超參數(shù)介紹以及優(yōu)化策略

    yolov5提供了一種超參數(shù)優(yōu)化的方法,這篇文章主要給大家介紹了關(guān)于YOLOV5超參數(shù)介紹以及優(yōu)化策略的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes

    詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes

    這篇文章主要介紹了詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05

最新評(píng)論

贵州省| 交城县| 利川市| 玉树县| 广汉市| 辽中县| 丹凤县| 蒙山县| 承德市| 石渠县| 武乡县| 瑞安市| 修文县| 禹城市| 德格县| 南召县| 开江县| 民勤县| 石河子市| 京山县| 绥江县| 滁州市| 池州市| 舞钢市| 鹤峰县| 吉首市| 临泉县| 郎溪县| 昭苏县| 晋城| 连州市| 廊坊市| 两当县| 呼玛县| 临颍县| 察隅县| 金堂县| 尉氏县| 云霄县| 东乌| 资源县|