可变不可变类型,就是对之前的数据类型进行补充,就是关于前面学过整型、浮点型、字符串、列表、字典、布尔,对他们进行一个分类
与我们之前提到过堆区和栈区的概念相关
可变类型
指的是:值改变的情况下,id不变,证明改的是原值,也就是说对于栈区而言,所指向的堆区地址是相同的,改变的只是内存地址中存储的值
验证
l
= [123,234,456]
print(id(l
))
l
= [1234,2345]
print(id(l
))
l
[1] = 1234
print(l
)
print(id(l
))
dic
= {'k1': 111, 'k2': 222}
print(dic
)
print(id(dic
))
dic
['k1'] = 444
print(dic
)
print(id(dic
))
同样,我们把一个列表赋值给另外一个列表,那么赋值的也是列表的内存地址,所以如果一个列表的内存地址里面存放的值被修改了,另外一个列表的值也会被修改
不可变类型
指的是:值改变的情况下,id也会改变,证明改的不是原值,而是产生新的值,改变的是栈区所对应的堆区地址,也就是说在堆区重新划分了一个取域存放新的值,然后栈区对应的地址指向新的值
验证
x
= 10
print(id(x
))
x
= 11
print(id(x
))
x
= 10.1
print(id(x
))
x
= 11.1
print(id(x
))
x
= "abc"
print(id(x
))
x
= "bcd"
print(id(x
))
60099904