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

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

时间2025-06-20 16:16:19分类IT科技浏览7009
导读:本文教程操作环境: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
java 图片生成pdf文件流(java图片转二进制流_java将文件转化成二进制流)