本教程的操作环境:windows7系统,Python 3.9.1,DELL G3电脑。
1、原理
with实际上是python中的关键字,它可以打开对象的上下文管理器协议。事实上,在文件操作中,不需要关闭文件,而是关闭文件 with 上下文管理器中的协议方法已经写好了。完成文件操作后, with语句将自动调用上下文管理器中的关闭语句来关闭文件资源。
2、注意
上下文管理器必须能够确保退出步骤的执行。如果您进入上下文管理器,根据定义,将有退出步骤。即使内部代码抛出异常,这也是正确的。事实上,如果退出步骤处理得当,上下文管理器的退出代码为处理此类异常提供了机会(尽管不需要强制处理异常)。
3、实例
classTestContext: def__enter__(self): print('__enter__') return1 def__exit__(self,exc_type,exc_value,exc_tb): print('exc_type:%s'%exc_type) print('exc_value:%s'%exc_value) print('exc_tb:%s'%exc_tb) withTestContext()ast: print('t:%s'%t) #Output: #__enter__ #t:1 #exc_type:None #exc_value:None #exc_tb:None
在这个例子中,我们定义了它 TestContext 类,它分别实现了 __enter__ 和 __exit__ 方法。
这样,我们就可以把它拿走 TestContext 当做一个「上下文管理器」使用,也就是通过 with TestContext() as t 执行方式。
从输出结果可以看出,具体执行流程如下:
__enter__ 在进入 with 语句块以前被调用过,这种方法的返回值被赋予了 with 后的 t 变量;
__exit__ 在执行完 with 然后调用语句块。
以上是上下文管理器python的原理,通过本文的研究,我们可以了解with的具体执行方法和两种方法的实现,希望对您使用上下文管理器有所帮助。更多Python高级指路:高级python