知行编程网知行编程网  2023-01-10 07:00 知行编程网 隐藏边栏  0 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python中如何使用@contextmanage?的相关知识,希望可以帮到处于编程学习途中的小伙伴

如何在python中使用@contextmanage?



本文教程操作环境:

windows7系统、Python 3.9.1,DELL G3电脑。



1、实现逻辑



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


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

(3)执行with时,会进入__enter__方法,然后执行generator,执行时会运行到with语法块中的yield


(4)__enter__ 返回 yield 的结果

(5)如果with语法块没有异常,with执行完成后,会进入__exit__方法,再次执行generator。这个时候会运行yield之后的代码逻辑

(6)如果with语法块发生异常,__exit__会通过generator将异常传入with语法块,即抛出异常给调用者



2、使用实例



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

class MyContent:
    def query(self):
        print('query data')
# 需要引入contextmanager
from contextlib import contextmanager
 
@contextmanager
def make_resource():
    print('first connect to resource')
    yield MyContent()
    print('close resource connection')
 
#应用上下文管理器
with make_resource() as r:
r.query()


以上就是


python中使用@contextmanage


的方法,大家在操作之前,一定要先就具体的


@contextmanage


实现逻辑理解,再展开相关的实例操作。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享