Python可变类型与不可变类型(day_006)

1. 概念

可变类型:值改变,id不变,证明改的是原值,证明原值是可以被改变的
不可变类型:值改变,id也变了,证明是产生新的值,压根没有改变原值,证明原值是不可以被修改的

2. 验证

2.1 int是不可变类型

x = 10
print(id(x)) 
x = 11
print(id(x))

将x的值修改后,原值“10”无法被改变,在内存中创建新的地址保存“11”,并修改x的内存地址,故int是不可变类型。

2.2 float是不可变类型

x=3.1
print(id(x))
x=3.2
print(id(x))

将x的值修改后,原值“31.”无法被改变,在内存中创建新的地址保存“3.2”,并修改x的内存地址(id),故意float是不可变类型。

2.3 str是不可变类型

x="程序猿过家家"
print(id(x))
x='谢晨'
print(id(x))

将x的值修改后,原值“程序猿过家家”无法被改变,在内存中创建新的地址保存“谢晨”,并修改x的内存地址(id),故str是不可变类型。

2.4 list是可变类型

L=['aaa','bbb','ccc']
print(id(L))
L[0]='AAA'
print(L)
print(id(L))

将L当中值“aaa”修改后,L的内存地址并没有发生变化,变化的是L[0]指向的内存地址,故list是可变类型。

2.5 dict是可变类型

dic={'k1':111,'k2':222}
print(id(dic))
dic['k1']=333
print(id(dic))

将dic当中键‘k1’的值修改为333后,dic指向的内存地址并没有没有发生,变化的是dic[k1]指向的内存地址,故dict是可变类型。

2.6 bool是不可变类型

b = True
print(id(b))
b = False
print(id(b))

将b的修改后,原值无法被改变,在内存中创建新的地址保存“谢晨”,并修改b的内存地址(id),故bool是不可变类型。

总结:
int、float、str、bool被设计成了不可分割的整体,不能够被改变,共性是他们的值都唯一。
list、dict被设计成了不可变类型,他们可以由多个值组成。

发布了24 篇原创文章 · 获赞 2 · 访问量 418

猜你喜欢

转载自blog.csdn.net/weixin_46491071/article/details/104695238