为了确保即使在出现错误的情况下也能运行某些清理代码,try…finally 语句是
很有用的。这一语句有许多使用场景,例如:
• 关闭一个文件。
• 释放一个锁。
• 创建一个临时的代码补丁。
• 在特殊环境中运行受保护的代码。
with 语句为这些使用场景下的代码块包装提供了一种简单方法。即使该代码块引发了异常,你也可以在其执行前后调用一些代码。例如,处理文件通常采用这种方式:

代码块


此外,如果上下文管理器提供了上下文变量,可以用as 子句保存为局部变量:
with context_manager as context:

代码块


注意,多个上下文管理器可以同时使用,如下所示:
with A() as a, B() as b:

这种写法等价于嵌套使用,如下所示:
with A() as a:
with B() as b:

04-23 12:35