Python中的对象储存

栈空间和堆空间的介绍:

栈空间与堆空间的主要区别:

1、内存的分配:

栈空间的内存由系统的编译器或解释器自动分配,无需手动干预;
堆空间的内存需要由用户来手动的申请和释放

2、内存大小:

栈空间的空间比堆空间的小,且大小相对固定;
堆空间的内存较大,可以不断地进行动态分配和释放;

3、 存储方式:

栈空间采用”先进后出“,最后进入栈空间的数据最先被处理,最先进入栈空间的最后被处理;
堆空间中数据的存放无序,可以随时进行引用修改

4、存储内容:

栈空间通常存储局部变量,函数参数,函数调用信息等;
堆空间则用于动态分配的内存的存储

python中的存储:

在python中,基本数据类型如数字、字符串等(一般大小不可变,固定长度类型)是直接存储在栈空间中的;复杂对象如列表、集合、对象实例等是在栈空间中存储数据的引用(类似于地址),而实际的数据则存储在堆空间中。
当这些对象被作为参数传递给函数时,它们的引用会被压入栈空间中,函数返回时再从栈空间中弹出这些引用,但实际的对象并没有被复制,仍然存在于堆空间中。

创建List时内存的变化: 当在python中定义一个列表list时,python会现在栈空间中开辟一块空间来存储该变量的引用,该引用指向堆空间的一块动态分配的内存块,该内存块实际的存储了list对象或集合对象。list和set定义后可不断地进行增加元素,是因为它在定义时会分配一块较大地内存池,然后根据其中实际存储元素地变化来进行内存的动态申请和释放

栈空间使用的优点:

栈空间被广泛应用于函数调用和局部变量存储的原因,主要有以下几个方面:

  1. 快速分配和回收内存:栈空间的大小通常是固定的,由操作系统预先分配好,因此在使用栈空间时,可以快速地分配和回收内存空间,不需要像堆空间那样进行复杂的内存管理。
  1. 访问速度快:由于栈空间是连续的内存块,访问起来非常快速,而且在 CPU 中已经内置了栈指针,因此对于栈的操作也比较高效。
  1. 存取方式简单:栈空间只允许在栈顶进行存取操作,因此存取方式非常简单,不需要像堆空间那样进行指针操作等。
  1. 便于实现递归:由于函数调用过程本质上也是一种递归调用,栈空间可以很方便地实现递归操作,而且由于栈空间的大小固定,可以很好地控制递归的深度和内存的使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值