教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Python中的可變和不可變數(shù)據(jù)類型詳解【軟件測試培訓】

更新時間:2019年10月09日15時07分 來源:傳智播客 瀏覽次數(shù):

Python中的可變和不可變數(shù)據(jù)類型的分類依據(jù), 指的是保存數(shù)據(jù)的源內(nèi)存空間的數(shù)據(jù)是否允許修改。

1. 不可變數(shù)據(jù)類型

源內(nèi)存空間中數(shù)據(jù)不允許修改, 如果想要修改, 只能開辟新內(nèi)存空間,讓變量引用指向新內(nèi)存空間數(shù)據(jù)的地址。

包括: int (整數(shù)類型) float (浮點數(shù)類型) bool (布爾類型) str (字符串類型) tuple(元組類型)。

比如: 下面以float 浮點數(shù)類型為例。

python數(shù)據(jù)類型1

上述圖示中可以清楚的看出, float是不可變數(shù)據(jù)類型, 其修改數(shù)據(jù)前后的引用數(shù)據(jù)的id()地址值發(fā)生了變化。

再比如: 我們以元組為例, 說明元組也是不可變的數(shù)據(jù)類型。

python數(shù)據(jù)類型2

可以看出, 對元組使用+=操作時,元組的前后數(shù)據(jù)改變了, 而且引用數(shù)據(jù)的地址也發(fā)生了改變,元組原來內(nèi)存空間中的數(shù)據(jù)不允許修改, 所以,元組是不可變數(shù)據(jù)類型。

再比如: 下邊以字符串為例, 證明字符串也是不可變數(shù)據(jù)類型。

從上面的圖示可以很清晰的看出, 修改數(shù)據(jù)的前后, 字符串引用數(shù)據(jù)的地址發(fā)生了變化, 原內(nèi)存空間的數(shù)據(jù)不允許修改, 因此字符串是不可變數(shù)據(jù)類型。

python數(shù)據(jù)類型3


因此可以得出結(jié)論, 不可變數(shù)據(jù)類型, 變量引用原內(nèi)存空間中數(shù)據(jù)不允許修改, 如果想要修改, 只能開辟新內(nèi)存空間,讓變量引用指向新內(nèi)存空間數(shù)據(jù)的地址。【推薦了解軟件測試培訓課程

2. 可變數(shù)據(jù)類型

概念: 源內(nèi)存空間中的數(shù)據(jù)可以修改不需要開辟新內(nèi)存空間,只要在源內(nèi)存基礎上修改數(shù)據(jù)。

包括: list(列表類型) dict(字典類型) set(集合類型)。

比如: 下面以列表為例, 說明列表是可變數(shù)據(jù)類型。

python數(shù)據(jù)類型4

從上面的圖示中可以看出, 對列表進行操作, 添加數(shù)據(jù)300后, 前后并沒有重新開辟內(nèi)存空間, 而是在原內(nèi)存基礎上添加的數(shù)據(jù), 所以 列表是可變數(shù)據(jù)類型。

再比如: 以下是字典的圖示, 展示字典也是可變數(shù)據(jù)類型。

python數(shù)據(jù)類型5

從上面的圖示可以看出, 修改字典數(shù)據(jù)前后, 其中引用數(shù)據(jù)的地址, 并沒有發(fā)生改變, 并沒有開辟新的內(nèi)存空間, 而是在原內(nèi)存基礎上修改的數(shù)據(jù), 因此字典是可變數(shù)據(jù)類型。

再比如: 下邊的集合的使用, 說明集合也是不可變數(shù)據(jù)類型。

python數(shù)據(jù)類型6

從上面的圖示可以查看出, 對集合中添加數(shù)據(jù)前后, 其集合變量的引用地址并沒有發(fā)生變化, 因此集合是可變數(shù)據(jù)類型。

因此從上面的圖示得出結(jié)論,源內(nèi)存空間中的數(shù)據(jù)可以修改,不需要開辟新內(nèi)存空間,只要在源內(nèi)存基礎上修改數(shù)據(jù), 這樣的數(shù)據(jù)類型 就是可變數(shù)據(jù)類型。

0 分享到:
和我們在線交談!