以下所有的內容都是基於記憶體位址來說的。
可變資料型別:變數引用的資料型別,在更改數值的時候,存在不開闢新記憶體 的行為,此資料型別為可變資料型別。
不可變資料型別 :變數引用的資料型別,在更改數值的時候,不存在不開闢新記憶體 的行為,此資料型別為不可變資料型別。
在 python 中,strings, tuples, 和 numbers是不可更改的物件,而list,dict等則是可以修改的物件。根據結論,閱讀下面解析。
更改值,開闢新記憶體
**:
num = 1
print(id(num))
num = 2
print(id(num))
結果:
140706618831104
140706618831136
分析:下圖中紅色框代表裡面的內容不可更改
更改值,開闢新記憶體
**:
string = 'a'
print(id(string))
string = 'b'
print(id(string))
結果:
2793695685168
2793695653232
分析:
更改值,不開闢新記憶體
**:
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
分析:
更改值,不開闢新記憶體 ——> 報錯,不能修改 ——> 假設不成立
**:
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 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
分析:
同「列表」,略
同「列表」,略
python 可變資料型別和不可變資料型別
不可變資料型別更改後位址發生變化,可變資料型別更改後位址不發生變化。看 說話 a 1 int b string string c 1,2 tuple print type a id a print type b id b print type c id c a 1b 1 c 3 4 print a,...
Python 可變資料型別和不可變資料型別
python的資料儲存在記憶體裡,該資料分為可變資料型別和不可變資料型別 不可變資料型別 字串,數字,元祖 可變資料型別 列表,字典,集合 nums 1 2,3 nums bk nums nums 0 0print nums nums print nums bk nums bk print form...
python 可變資料型別 不可變資料型別
在python中,資料型別分為可變資料型別和不可變資料型別,不可變資料型別包括string,int,float,tuple,可變資料型別包括list,dict。所謂的可變與不可變,舉例如下 a test print a 0 t a 0 1 traceback most recent call las...