部分程序中,可能事先要准备资源,事后做清理工作。 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所求值的对象必须有一个__e