Python中如何使用count,Python中如何使用enumerate
本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。
1、实现逻辑
(1)初始化一个_GeneratorContextManager类,构造方法接受一个生成器Gen。
(2)该类实现上下文管理器协议__enter__和__exit__
(3)执行with时,将进入__enter__方法,然后执行这个生成器,它将运行到with语法块中的yield。
_ _ enter _ _返回yield的结果
(5)如果with语法块中没有异常,则在执行with后,会进入__exit__方法,再次执行生成器,然后运行yield后的代码逻辑。
(6)如果with语法块中发生异常,__exit__会将异常通过生成器传递到with语法块中,也就是将异常抛出给调用方。
2、使用实例
在Python中,可以使用decorator @contextmanager来简化上下文管理器,即不需要定义__enter__和__exit__方法。
classMyContent:
defquery(self):
打印(查询数据)
需要引入# contextmanager
fromcontextlibimportcontextmanager
@上下文管理器
defmake_resource():
打印( firstconnecttoresource )
yieldMyContent()
打印( closeresourceconnection )
#应用程序上下文管理器
withmake_resource()asr:
R.query()以上是python中使用@contextmanage的方法。在操作之前,首先要了解具体的@contextmanage实现逻辑,然后展开相关的示例操作。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。