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
分析:
天然祛斑
found的过去式
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.集合
同“列表”,略