python中的变量在内存中的保存形式

前戏部分

# python中定义一个变量,如:`name = 'the3times'`,在计算机底层会发生这样一件事:操作系统调用硬件,在内存中开辟一块空间,将值'the3times'存放在这块内存空间中;然后将变量名name与这块内存空间的地址绑定关联在一起;程序通过变量名name的调用来唯一访问值'the3times'。

# 这样的话,如果程序中有许多变量需要定义就会在内存中开辟大量的内存空间;
# 另外,我们知道内存是有限的,变量数量如果太多就会造成内存不足甚至内存溢出的风险。
# 从这个角度出发,程序开发必须时刻且谨慎注意内存管理问题。然而内存管理这件事是繁琐且存在分险的。

栈区 & 堆区

我们知道变量的定义会把变量值存储在内存中。其实,具体的是把变量值存放在内存的堆区中,把变量名和变量值的绑定关系存放在栈区。绑定关系就是变量名保存变量值所在的内存地址。

通过访问变量名,找到其对应存储的变量值的内存地址,进而访问到变量值。

x = 10
y = 20

引用小猿取经的图片

直接引用 & 间接应用

通过栈区的变量名直接找到堆区的变量值,这种引用(访问)就是直接引用。

通过从栈区出发引用到堆区后,再进一步引用才能找到变量值的内存地址,这种是间接引用。

l2 = [20, 30]  # 列表本身被变量名l2直接引用,包含的元素被列表间接引用
x = 10  # 值10被变量名x直接引用
l1 = [x, l2]  # 列表本身被变量名l1直接引用,包含的元素被列表间接引用

引用小猿取经的图片

垃圾回收机制

幸运的是,python解释器帮我们做了这件事。python解释器自带的内存管理:垃圾回收机制。垃圾回收机制用来回收内存中不再使用的变量值所占用的内存空间

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值