python中可變數據類型和不可變數據類型(詳解)

看了一下網絡相關文章,還是決定自己寫一下,轉載必須註明出處。


一、名詞解釋

以下所有的內容都是基於內存地址來說的。

  可變數據類型:變量引用的數據類型,在更改數值的時候,存在不開闢新內存 的行爲,此數據類型爲可變數據類型。

  不可變數據類型 :變量引用的數據類型,在更改數值的時候,不存在不開闢新內存 的行爲,此數據類型爲不可變數據類型。

在 python 中,strings, tuples, 和 numbers不可更改的對象,而 list,dict 等則是可以修改的對象。根據結論,閱讀下面解析。

二、數據類型分析

1.數字

更改值,開闢新內存 

代碼:

num = 1
print(id(num))
num = 2
print(id(num))

結果: 

140706618831104
140706618831136

分析:下圖中紅色框代表裏面的內容不可更改

 

 

2.字符串

更改值,開闢新內存 

代碼:

string = 'a'
print(id(string))
string = 'b'
print(id(string))

結果:

2793695685168
2793695653232

 分析:

3.列表

更改值,不開闢新內存 

代碼:

list = ['a','b','c','d','e','f','g']
print(id(list))
list[1] = 'w'
print(id(list))
print(list)

結果:

1490101031496
1490101031496
['a', 'w', 'c', 'd', 'e', 'f', 'g']

分析:


更改值,開闢新內存 

代碼:

list = ['a','b','c','d','e','f','g']
print(id(list))
list = (1,2,3,4,5,6)
print(id(list))

結果:

2123071902280
2123073209064

分析:

 

4.元組

更改值,不開闢新內存   ——> 報錯,不能修改  ——>   假設不成立

代碼:

tup = ('a','b','c','d','e','f','g')
print(id(tup))
tup[1] = 'w'
print(id(tup))
print(tup)

結果:報錯

2210815038744
Traceback (most recent call last):
  File "E:/pythonTest/test.py", line 3, in <module>
    tup[1] = 'w'
TypeError: 'tuple' object does not support item assignment

分析:


更改值,開闢新內存 

tup = ('a','b','c','d','e','f','g')
print(id(tup))
tup = (1,2,3,4,5,6)
print(id(tup))

 結果:

2444846585112
2444846514920

分析:

 

5.字典

同“列表”,略

6.集合

同“列表”,略

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章