上下文管理器是在上下文(代码块)开始和结束时收到通知的对象。您通常在该with语句中使用一个。它负责通知。
例如,文件对象是上下文管理器。当上下文结束时,文件对象自动关闭:
open_file = open(filename) with open_file: file_contents = open_file.read() # open_file对象已自动关闭。
上面的示例通常通过使用as关键字进行简化:
with open(filename) as open_file: file_contents = open_file.read() # open_file对象已自动关闭。
任何结束执行该块的操作都会导致调用上下文管理器的exit方法。这包括异常,并且在错误导致您过早退出打开的文件或连接时很有用。在没有正确关闭文件/连接的情况下退出脚本是一个坏主意,可能会导致数据丢失或其他问题。通过使用上下文管理器,可以确保始终采取预防措施,以防止这种方式造成损坏或丢失。此功能是在Python 2.5中添加的。