垃圾回收 | Python从入门到精通:高阶篇之三十五

简介: 在程序中没有被引用的对象就是垃圾,这种垃圾对象过多以后会影响到程序的运行的性能。所以我们必须进行及时的垃圾回收,所谓的垃圾回收就是讲垃圾对象从内存中删除。在Python中有自动的垃圾回收机制,它会自动将这些没有被引用的对象删除。

类中属性和方法 | Python从入门到精通:高阶篇之三十四

垃圾回收

就像我们生活中会产生垃圾一样,程序在运行过程当中也会产生垃圾。
程序运行过程中产生的垃圾会影响到程序的运行的运行性能,所以这些垃圾必须被及时清理。
什么是垃圾?
没用的东西就是垃圾。

class A:
    def __init__(self):
        self.name = 'A类'

a = A()

print(a.name)

input('回车键退出...')

执行结果:

image.png

添加代码:

a = None

将a设置为了None,此时没有任何的变量对A()对象进行引用,它就是变成了垃圾。

在程序中没有被引用的对象就是垃圾,这种垃圾对象过多以后会影响到程序的运行的性能。所以我们必须进行及时的垃圾回收,所谓的垃圾回收就是讲垃圾对象从内存中删除。

在Python中有自动的垃圾回收机制,它会自动将这些没有被引用的对象删除,所以我们不用手动处理垃圾回收。
init类似的还有del
del是一个特殊方法,它会在对象被垃圾回收前调用

    def __del__(self):
        print('A()对象被删除了~~~',self)

此时,若没有a = None,它的执行结果为:

image.png

如果存在a = None,a变成了垃圾,它的执行结果:

image.png

如果此时又使用一个变量b,来引用a对应的对象

b = a

执行结果为:

image.png

此时不会删除,因为有对象b的存在。
若添加b = None,则执行结果为:

image.png

若直接执行del a,执行结果为:

image.png

此时不会执行,是因为del直接删除的是变量a,并没有删除对象,有变量b的存在。
若也执行del b,则会出现:

image.png

我们针对整体代码来说明一下input,代码最后一行的input指令用来接收一条用户输入,在用户输入数据前运行尚未中止,变量b未被销毁,而在用户输入完成后,系统运行结束,自动回收垃圾变量b。

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
4天前
|
存储 程序员 API
Python 入门指南(五)(4)
Python 入门指南(五)
12 1
|
1天前
|
网络协议 网络架构 Python
Python 网络编程基础:套接字(Sockets)入门与实践
【5月更文挑战第18天】Python网络编程中的套接字是程序间通信的基础,分为TCP和UDP。TCP套接字涉及创建服务器套接字、绑定地址和端口、监听、接受连接及数据交换。UDP套接字则无连接状态。示例展示了TCP服务器和客户端如何使用套接字通信。注意选择唯一地址和端口,处理异常以确保健壮性。学习套接字可为构建网络应用打下基础。
18 7
|
2天前
|
Python
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
|
4天前
|
Python 索引 C语言
Python3从零基础到入门(2)—— 运算符-3
Python3从零基础到入门(2)—— 运算符
|
4天前
|
Python
Python3从零基础到入门(2)—— 运算符-2
Python3从零基础到入门(2)—— 运算符
Python3从零基础到入门(2)—— 运算符-2
|
4天前
|
Python C语言 存储
Python3从零基础到入门(2)—— 运算符-1
Python3从零基础到入门(2)—— 运算符
Python3从零基础到入门(2)—— 运算符-1
|
4天前
|
存储 C语言 Python
|
4天前
|
Python Windows
|
4天前
|
NoSQL 测试技术 API
Python 入门指南(七)(4)
Python 入门指南(七)
9 0
|
4天前
|
测试技术 程序员 数据库
Python 入门指南(七)(3)
Python 入门指南(七)
7 0