首页IT科技python construct(python中如何使用@contextmanage?)

python construct(python中如何使用@contextmanage?)

时间2025-08-03 02:57:30分类IT科技浏览7616
导读:本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。...

本文教程操作环境:windows7系统               、Python 3.9.1               ,DELL G3电脑               。

1                      、实现逻辑

(1)初始化一个 _GeneratorContextManager 类                      ,构造方法接受了一个生成器 gen

(2)这个类实现了上下文管理器协议 __enter__ 和 __exit__

(3)执行 with 时会进入到 __enter__ 方法       ,然后执行这个生成器        ,执行时会运行到 with 语法块内的 yield 处

(4)__enter__ 返回 yield 的结果

(5)如果 with 语法块没有发生异常                      ,with 执行结束后              ,会进入到 __exit__ 方法        ,再次执行生成器                       ,这时会运行 yield 之后的代码逻辑

(6)如果 with 语法块发生了异常              ,__exit__ 会把这个异常通过生成器,传入到 with 语法块内                       ,也就是把异常抛给调用者

2       、使用实例

在Python中                      ,可以使用装饰器 @contextmanager来简化上下文管理器,也就是不需要定义__enter__和__exit__方法                      。

classMyContent: defquery(self): print(querydata) #需要引入contextmanager fromcontextlibimportcontextmanager @contextmanager defmake_resource(): print(firstconnecttoresource) yieldMyContent() print(closeresourceconnection) #应用上下文管理器 withmake_resource()asr: r.query()

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python-socketio(python中SocketServer是什么?) status灯闪烁怎么办(state声明式)