时间:2021-05-22
Python中的垃圾回收算法是采用引用计数, 当一个对象的引用计数为0时, Python的垃圾回收机制就会将对象回收
a = "larry"b = alarry这个字符串对象, 在第一行被贴了a标签后, 引用计数为1, 之后在第二行, 由贴上了b标签, 此时, 该字符串对象的引用计数为
a = "larry"b = adel a注意: 在Python语言中, del语句操作某个对象的时候, 并不是直接将该对象在内存中删除, 而是将该对象的引用计数-1
>>> a = "larry">>> b = a>>> del a>>> id(b)4572141808>>> id(a)Traceback (most recent call last): File "<input>", line 1, in <module> id(a)NameError: name 'a' is not defined从以上示例中可以看出, larry这个字符串对象在第一行被贴上了a标签, 此时字符串对象的引用计数为1, 接着第二行又被贴上了b标签, 此时该字符串对象的引用计数为2, 在第三行中, del语言删除了a变量(标签), 在后续的print中可以看出, 内存中实际的字符串对象并没有被删除, del语言只是删除了一个变量对该字符串对象的引用, 所以对于larry这个字符串对象来说, 效果只是引用计数-1
魔法函数之__del__
类中的__del__魔法函数, 支持我们自定义清理对象的逻辑, 当Python解释器使用del语言删除类的对象的时候, 会自动调用类中的__del__函数, 我们可以对其进行重载
>>> class Ref:...... def __init__(self, name):... self.name = name...... def __del__(self):... print("删除对象")... del self.name...>>>>>> r = Ref(name="larry")>>> print(r.name)larry>>>>>> del r删除对象
我们可以通过重载__del__魔法函数, 自己灵活控制在del 对象的时候执行哪些善后操作
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java垃圾回收与对象生命周期详解Java中的垃圾回收与对象生命周期1.垃圾回收垃圾回收是Java程序设计中内存管理的核心概念,JVM的内存管理机制被称为垃圾回
前言在python列表的元素删除操作中,del,pop(),remove()很容易混淆,下面对三个语句/方法作出解释del语句del语句可以删除任何位置处的列表
其实方法很简单~输入reset,选y。删除不可恢复。补充:Python中的del语句——变量删除Python中的del语句作用是删除变量,而不是删除数据>>>a
一.垃圾回收机制Python中的垃圾回收是以引用计数为主,分代收集为辅。引用计数的缺陷是循环引用的问题。在Python中,如果一个对象的引用数为0,Python
一.垃圾回收机制Python中的垃圾回收是以引用计数为主,分代收集为辅。引用计数的缺陷是循环引用的问题。在Python中,如果一个对象的引用数为0,Python