在python中,with语句支持运行时上下文。上下文由上下文管理器定义。使用上下文管理器,我们可以创建用户定义的类来定义运行时上下文。它在执行语句主体之前进入任务,并且在语句主体完成时结束。
上下文管理器有两种不同的方法。这些方法是-
__enter __()方法用于输入运行时上下文。它将返回当前对象或另一个相关对象。返回的值绑定到with语句的as子句中的标识符。
__exit __()方法用于返回布尔类型的结果。它指示发生的任何异常。如果with语句有一个异常,它将转到末尾。
class MyFileManager: def __init__(self, fname): self.file_name = fname def __enter__(self): self.myFile = open(self.file_name, 'r') return self.myFile def __exit__(self, exc_type, exc_val, exc_tb): if self.myFile: self.myFile.close() with MyFileManager('sampleTextFile.txt') as myFile: x = myFile.read() print(x)
输出结果
Test File. We can store different contents in this file ~!@#$%^&*()_+/*-+\][{}|:;"'<.>/,'"]