Python中不可变类型和可变类型详解
2020-12-26 22:27
标签:end name 内存地址 不可变 style append 详解 alt div 140707604042688 1631174812232 3073182890456 Python中不可变类型和可变类型详解 标签:end name 内存地址 不可变 style append 详解 alt div 原文地址:https://www.cnblogs.com/jackson669/p/13034603.html什么是不可变类型
变量对应的值中的数据是不能被修改,如果修改就会生成一个新的值从而分配新的内存空间。
# int为不可变类型
n = 5
print(id(n))
n+=1
print(id(n))
140707604042720b = False
print(id(b))
b = not b
print(id(b))什么是可变类型
列表(list)字典(dict)
变量对应的数值中的数据可以被修改,但是内存地址保持不变
name = [‘jac‘,‘maj‘,‘asd‘]
print(id(name))
name.append(‘kjaa‘)
print(id(name))
1631174812232字典
stu = {‘name‘:‘jac‘,‘age‘:12}
print(id(stu))
stu.update({‘sex‘:‘boy‘})
print(id(stu))
print(stu)
3073182890456为什么生成以上两种情况
因为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)
图解
可变类型执行过程和内存分析
下一篇:线程 以及 thread类
文章标题:Python中不可变类型和可变类型详解
文章链接:http://soscw.com/index.php/essay/38445.html