部分程序中,可能事先要准备资源,事后做清理工作。 with方法就是python的非常酷的语句,安全可靠,方便。我们自己的类如何具备with的能力?必须拥有__enter__()函数和一个__exit__()函数,本章节介绍两个函数的能力。
对于这种场景,一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。
一、with语句
1,文件读取操作,通常打开一个文件,然后读取文件内容,最后需要关闭文件,代码如下:
f = open("./demofile2",mode="r",encoding="UTF-8")
for content in f:
print(content)
f.close()
这样的程序文件打开正常时没问题,但是存在2个问题
- 可能忘记关闭文件句柄;
- 文件读取数据发生异常,没有进行任何处理。
2,使用with语句如下:
with open("./demofile2",mode="r",encoding="UTF-8") as f:
data = f.read()
# 离开with语句文件自动关闭
print(data)
3,with语句执行过程
with操作很魔法,Python对with的处理还很聪明。基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。
执行过程概述,with后面的语句被执行后,__enter__()函数被调用,_enter__()的返回值将被赋值给as后面的变量,后边详细说明_enter__()函数返回值问题。当with后面的代码块全部被执行完

本文介绍了如何在Python中通过自定义类实现with语句,重点讲解了`__enter__`和`__exit__`方法的作用,以及它们在文件操作中的应用,强调了with语句在资源管理和异常处理中的优势。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



