Python中不可变类型和可变类型详解
什么是不可变类型
变量对应的值中的数据是不能被修改,如果修改就会生成一个新的值从而分配新的内存空间。
# int为不可变类型 n = 5 print(id(n)) 140707604042688 n+=1 print(id(n))140707604042720 b = Falseprint(id(b))b = not bprint(id(b))
什么是可变类型
列表(list)字典(dict)
变量对应的数值中的数据可以被修改,但是内存地址保持不变
name = [‘jac‘,‘maj‘,‘asd‘] print(id(name)) name.append(‘kjaa‘) print(id(name)) 16311748122321631174812232 字典 stu = {‘name‘:‘jac‘,‘age‘:12} print(id(stu)) stu.update({‘sex‘:‘boy‘}) print(id(stu)) print(stu) 30731828904563073182890456 为什么生成以上两种情况 因为python中的值是通过引用(地址值)传递的,不可变类型的值一旦被修改后会创建一个内存空间并且生成新的地址值,可变类型的值会在原内存空间中被修改。
不可变类型执行过程分析
i = 5 # 开辟内存空间存放5,并且将地址赋值给i变量 print(id(i)) j = i # 将id(i)的地址赋值给j,j指向到同一个内存空间 print(id(j)) j+=1 # 因为改变了j的数值,所以就麻烦了,因为j是不可变对象,所以一旦改变就会自动开阔一个新的地址空间 print(i) print(j)
图解
可变类型执行过程和内存分析
相关推荐
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
夜斗不是神 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16
坚持是一种品质 2020-11-16
染血白衣 2020-11-16
huavhuahua 2020-11-20
meylovezn 2020-11-20
逍遥友 2020-11-20
weiiron 2020-11-16