上下文命令选项卡的用途(上下文管理器在python中的原理)
本文教程操作环境: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 语句块之后被调用。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!