上下文管理器允许你在有需要的时候,精确的分配和释放资源。使用上下文管理器最广泛的案例就是with语句了。一个常见的用例,是资源的加锁和解锁,以及关闭已打开的文件。
通过使用with,许多样板代码被消掉了,这就是with语句的主要优势,它确保我们的文件会被关闭,而不用关注嵌套代码如何退出。
with open("some_file.txt", "w") as fd:
fd.write("hello context managers")
上面这段代码打开了一个文件,往里面写入了一些数据,然后关闭改文件。如果往文件写数据时发生异常,他也会尝试关闭文件。上面那段代码与这一段是等价的:
file = open("some_file.txt", "w")
try:
file.write("hello context managers")
finally:
file.close()