Python变量内存管理

一、变量存哪了?

思考 : 当变量值命名以及生成的时候, 会在哪里保存着呢 ?

x = 10

当我们在p1.py中定义一个变量x = 10,那么计算机把这个变量值10存放在哪里呢了?我们回顾计算机的三大核心组件为:CPU、内存和硬盘。一定不是CPU,那是存放在内存还是硬盘中了呢?我们再回顾变量运行的三个过程,如果我们没有使用python解释器运行p1.py这个文件,那么x=10很明显只是很普通的四个字符x、=、1、0。而只有Python解释器运行了这个文件,那字符进入了内存,才会有变量这个概念。也就是说变量是存放在内存当中的。

变量存放在内存中这句话太宽泛了,我们把它具体化。现在想象我们在学校(电脑内存)里上课,学校每开一个班,学校都会开辟一个教室给这个班级上课用(存放变量值10),而班级的门牌号则是(变量名x)。也就是说,对于电脑内存这个大内存,每定义一个变量就会在这个大内存中开辟一个小空间,小空间内存放变量值10,然后内存给这个小空间一个变量名x(门牌号),x指向10。

二、Python垃圾回收机制

对于p1.py,如果我们再加上一段代码x = 11,大内存会开辟另一个小空间存储变量值11,把变量值绑定另一个门牌号x,但是由于之前有x,所以大内存会解除x与10的连接,让x与11连接。这个时候10由于没有了门牌号,所以成为了python眼中的垃圾,python就会处理这个垃圾,释放10的内存占用,这就是python的垃圾回收机制。而其他语言需要手动把10的内存占用释放掉。

2.1 引用计数

从上述的解释我们可以知道只要某个变量值绑定着门牌号,就不是垃圾,反之变量值没有绑定着门牌号,这个变量值就是垃圾,python就会自动清理这个垃圾。这里我们对于这个门牌号给定一个专业的解释,在python中这个门牌号被称作引用计数。

x = 10 # 10引用计数加1为1

y = x # 10引用计数加1为2

x = 11 # 10引用计数减1为1;11引用计数加1为1

del y # 10引用计数减1为0,触发python垃圾回收机制,python清理10的内存占用

上述代码就是一个引用计数加减的过程。

三、小整数池

对于上一节讲的引用计数,需要注意的是:Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。

在pycharm中运行python程序时,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究。

python内存管理 变量_Python变量内存管理相关推荐

  1. python内存管理变量_Python变量内存管理

    Python变量内存管理 一 .引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应 ...

  2. python内存池机制_python的内存管理机制

    一.python是一个什么样类型的语言 1.python是一种动态解释性强类型定义的高级.通用性编程语言. 解释型:执行的时候,才一条一条的解释成机器语言给计算机来执行.如:python.js.rub ...

  3. python是基于什么的内存管理方式_python的内存管理机制是什么?

    内存管理机制:引用计数.垃圾回收.内存池. 引用计数: 引用计数是一种非常高效的内存管理手段, 当一个 Python 对象被引用时其引用计数增加1, 当其不再被一个变量引用时则计数减 1. 当引用计数 ...

  4. python怎么清理垃圾_python清理内存

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 语言的内存管理是语言设计的一个重要方面. 它是决定语言性能的重要因素. 无论是c ...

  5. python保存变量_python | 变量-保存与命名规则

    1 变量生成 python中生成变量无须事先声明,系统会根据赋值或表达式运算结果值,自动推断变量类型.在python中,变量生成的语法如下:变量名 = 数据或表达式 x = 123 type(x) # ...

  6. c语言调用python变量_Python变量

    在编程语言中,变量是一个必不可少的词,大家也可以把变量理解成名字,也可以理解为一个标签. 举个例子来讲解一下变量,比如我们购买了一套名为"dotcpp"的房子,我们在"d ...

  7. python的常量和变量_python变量和常量

    变量 什么是变量? 变量,是用于在内存中存放程序数据的容器 计算机的最核心功能就是"计算", 计算需要数据源,数据源要存在内存里,比如我要把小明的姓名.身高.年龄信息存下来,后面程 ...

  8. python max取下标_Python 变量类型总结

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

  9. python保存变量_Python变量存储

    参考文献1:http://makaidong.com/maikerniuniu/1280_9073599.html 参考文献2:https://www.cnblogs.com/fandx/p/1046 ...

  10. python怎么定义int变量_Python 变量类型 | 菜鸟教程

    Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...

最新文章

  1. GC rich的区域不易测序的原因
  2. python有时候没有智能提示_python没有报错提示
  3. 【谦先生日志】程序员如何优雅地融入新环境
  4. python画图代码星星-Python利用for循环打印星号三角形的案例
  5. 解决SQL Server 2000 错误15023:当前数据库中已存在用户或角色
  6. python time localtimeq获取准确时间_Python时间模块datetime、time、calendar的使用方法
  7. 【python】排序算法的稳定性冒泡排序(画图详细讲解)
  8. 表单字段三维数组名_【技术汇】回转式空气预热器温度场三维数值模拟
  9. 数据中心细节_当细节很重要时数据不平衡
  10. TensorFlow训练单特征和多特征的线性回归
  11. 中国的第一座基站,你知道在哪吗?
  12. activiti表单设计器_可拖拽的表单设计布局器-echarts-vue-jquery-可视化图表
  13. hackmyvm之warez
  14. 用计算机计算数学公式,Formula Calculator公式计算器
  15. linux服务器插上u盘不显示,U盘在Linux下显示不正常的解决方法
  16. 网页 flash swf 无法调用 摄像头 问题解决
  17. github python100天_GitHub - ychgithub/Python-100-Days: Python - 100天从新手到大师
  18. react仿钉钉流程图-审批工作流
  19. php工具箱在win10自动退出,win10游戏闪退修复办法
  20. 聊聊kafka consumer offset lag increase异常

热门文章

  1. 应用程序平台应用之星:在线手机应用开发平台 不用搭建环境
  2. Linux下修改PATH的方法
  3. script language=javascriptwindow.location.href=http://blog.securitycn.net/script
  4. 一个根据SortOrder控制排序的存储过程
  5. 1.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 基础知识点概述
  6. 1.WebServices 简介
  7. 6. wordpress plug-in
  8. MSCRM plicklist 级联JS
  9. 2018-2019-2 网络对抗技术 20165322 Exp5 MSF基础应用
  10. LeetCode第13题 罗马数字转整数