简单了解堆和栈

内存:内存中存在堆和栈,是为了解决硬盘和CPU速度不匹配问题
栈:客栈,栈道,存储空间
---------特点:小,速度快,有序

堆:
-----------特点:大,速度慢,无序

简单的数据类型会放在栈里,这样可以提高程序执行效率;相反,复杂的数据类型会放在堆里,比如:对象,容器。

example1:
a=1
b=a
a=2
print(b)
结果:b=1
解释:系统会给a,b各分配一个地址空间,所以当a地址空间的值变了,不会影响b的值。
在这里插入图片描述
example2:
c=[1,2,3]
d=c
c[0]=100
print(d)
结果:d=[100,2,3]
解释:由于列表不是一个简单数据类型,它会存储在堆中,还会在栈中存放一个相应地址名,c和d会放在两个地址中,并且会分别得到数据的地址名,所以当堆中 的内容发生改变时,c 和d会根据不变的地址找到堆的数据。

在这里插入图片描述
example3:
浅拷贝
a=[1,2,3]
b=a.copy()
a[0]=100
print(b)
结果:b=[1,2,3]
解释:同样 a和b都会在栈中分配地址,而且会得到堆中数据的地址名,但是copy会在队中再复制出一个数据,并分配地址,所以当a对应数据地址内容改变时,不会影响b对应的地址。
在这里插入图片描述

example4:
深拷贝
a=[[1,2],3,4]
b = copy.deepcopy()
a[0][1]=1
print(b)
结果:b=[[1,2],3,4]
解释:在这里深拷贝会把循着地址找到数据,并进行拷贝,所以当a对应地址的内容改变时,由于b已经拷贝出地址中的内容, 所以b不会因为a的值变而改变。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值