了解内存管理可以帮助您编写高效的Python代码。可能无法控制内存分配,但是您可以优化程序来更好地分配内存。

在python中,整个对象存储在内存中,对象可以是整数、字符串或列表,以及指向对象的变量。 让我们了解python对象的作用!每当创建一个变量时(比如a = 200),就会在内存中创建一个新的PyObject,它的ref count被设置为1,变量“a”指向它。

但是什么是ref count呢? 举个例子,我们有一个类型为integer、值为200的变量“a”。假设我需要另一个名为“b”的变量,其类型为integer,值为200。创建了两个这样的变量 a = 200 b = 200 现在,您可能在猜测,对于变量“a”和“b”,内存中必须有2个对象。但事实并非如此。“a”和“b”指向同一个对象。 变量a和b引用相同的PyObject。
让我们通过Python代码来验证这一点。 如您所见,变量“ a”和“ b”具有相同的id(内存位置),因此表示相同的对象,而c具有不同的id值。

因此,当前在内存中有两个python对象。 现在,如果我们为“ a”分配一个新值,即a = 3。 现在, “ a”指向一个新对象,而 “ b”仍然指向同一对象。 但是让我们考虑这个例子。 在此示例中,a = 1,但“ b”的值为“ a”。当我们更改“ a”的值时,是否也会影响“ b”?让我们来看看。 “ a”现在指向新对象,但 “ b”仍然指向旧对象。 但这是为什么呢? 因为“b”并不直接指向变量“a”,而是指向变量“a”的对象。这就是ref count的作用,它跟踪指向它的变量的数量。

当PyObject的引用ref count变为零,将会发生什么呢? 一旦对象的ref count变为0,垃圾收集器就会将其从内存中删除。

那么如何删除对对象的引用:

  1. del Python的内置del关键字可帮助我们删除这些指向对象的引用。实际上,有些人认为del从内存中删除了对象,事实并非如此。但可以像这样使用del删除引用。
  2. 超出范围 一旦超出范围,对象的引用将自动删除。 让我们以上面的代码为例,变量“ x”的对象在scope()函数中ref count为+1,但是当解释器离开此函数作用域时,PyObject的ref count将减1,因为“ x”是一个局部变量,只对它的函数有作用域。
  3. 3.将新对象分配给变量。 将新对象分配给现有变量时。前一个对象的ref count减1。

python del函数_干货:Python的内存管理办法相关推荐

  1. python isalnum函数_探究Python中isalnum()方法的使用

    探究Python中isalnum()方法的使用 isalnum()方法检查判断字符串是否包含字母数字字符. 语法 以下是isalnum()方法的语法: str.isa1num() 参数 NA 返回值 ...

  2. python pos函数_使用python+sklearn实现特征提取

    sklearn.feature_extraction模块可用于以机器学习算法支持的格式从原始数据集(如文本和图像)中提取特征.**注意:**特征提取与特征选择有很大不同:前者是将任意数据(例如文本或图 ...

  3. python deepcopy函数_用Python解数独[6]:递归获得最终答案

    目录 用Python解数独[0] 用Python解数独[1]:求每个单元格的行值域 用Python解数独[2]:求列值域和九宫格值域 用Python解数独[3]:求总值域 用Python解数独[4]: ...

  4. python 微积分 函数_用Python学微积分(2)---复合函数

    函数的复合(Composition) 定义:设函数y=f(u)和u=g(x)u=g(x),则函数y=f[g(x)]称为由y=f(u)和u=g(x)复合而成的复合函数,其中函数y=f(u)常常称为外函数 ...

  5. Python写入字典_干货|python基础知识总结

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 Python是一种面向对象的解释型计算机程序设计语言.它有着代码简洁.可读性强的特点. ...

  6. python diff函数_使用Python创建你自己的diff工具

    为什么我需要自己的diff工具? 我经常使用git跟踪我的编码项目.文章.业务工作等等.git的一个美妙之处在于,你可以通过简单地使用其内置的diff功能来轻松地比较你的工作的不同状态.要使用这个功能 ...

  7. python unique函数_《Python编程从入门到实践》json数据可视化练习详解

    <Python编程从入门到实践>16.2中,计算收盘价均值的程序有些不易看懂,结合我自己的理解进行一些说明. 使用的数据集:join格式的数据, 数据集是由多个字典为元素组成的列表.每个字 ...

  8. python readlines函数_关于python的readlines

    此处记录一下python的 read readline readlines 由于readlines()产生了一个可怕的bug,索性影响不大,此处记录一下: 建议python读取文件,存在文件过大,不能 ...

  9. python scapy 函数_【python|scapy】sprintf输出时raw_string转string

    最近在有python的scapy模块分析TCP报文,一直有一个关于转义字符的问题困惑着我,查找的很多资料后仍然百思不得其解,请大神指教. 请看代码: from scapy.all import * d ...

最新文章

  1. php statements,PHP PDOStatement::setAttribute讲解
  2. ggplot2版聚类物种丰度堆叠图
  3. Java Web架构知识整理——记一次阿里面试经历
  4. 大学计算机课英语心得体会,关于计算机网络辅助大学英语教学的思考学习心得...
  5. 【Android应用开发】Android Studio 错误集锦 -- 将所有的 AS 错误集合到本文
  6. anguarjs 上传图片预览_MIUI12 20.10.29更新,新版「模糊预览图」
  7. 【Tools】CSDN-markdown编辑器使用说明
  8. 完全相同的4个小矩形如图所示放置_吸睛!矩形在PPT中的创意表现
  9. 百度女程序员半夜打的回家,被的哥嘲讽:加班到一点收入还不如我,图啥?
  10. Laravel 中asset 函数支持https 协议
  11. CKEditor配合CKFinder的使用
  12. Java Web学习总结(37)——Filter和Listener详解
  13. android groovy方法,Android Gradle从入门到精通(三)Groovy快速入门指南
  14. 进阶03 System、StringBuilder类
  15. Windows 下安装 nvm 管理 nodejs 版本
  16. arcgis 合并名字相同的要素_【转】ArcGIS中各种合并要素(Union、Merge、Append、Dissolve)的异同点分析...
  17. happen-before与volatile、final
  18. 初中三年级数学可以用计算机吗,不到3分钟,这份初中数学攻略被家长和学生疯狂转发!太实用了!...
  19. MySQL医疗信息管理系统数据库(源码)
  20. 短视频平台开发,首先要搭建短视频框架

热门文章

  1. python matplotlib画图的几个实例--latex,坐标系等
  2. 云上人替代方案训练代码
  3. 搞懂 Javascript 继承原理
  4. liferay学习(源码调试问题)
  5. SharePoint Adventures : Using Claims with Reporting Services
  6. 利用过采样技术提高ADC测量微弱信号时的分辨率
  7. 基于SSH实现在线课程学习系统
  8. leetcode50. Pow(x, n)
  9. sql plus特殊使用技巧
  10. jemter编写Mysql脚本___传参