全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

python中如何使用@contextmanage?

发布时间:2023-11-13 08:06:50
发布人:xqq

python中如何使用@contextmanage?

本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。

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()

以上就是python中使用@contextmanage的方法,大家在操作之前,一定要先就具体的@contextmanage实现逻辑进行了解,然后再展开相关的实例操作。更多Python学习教程请关注IT培训机构:千锋教育。

python培训

相关文章

python是什么意思啊

python是什么意思啊

2023-11-14
python库是什么意思

python库是什么意思

2023-11-14
python多进程取代多线程的探究

python多进程取代多线程的探究

2023-11-14
pythonGIL的原理

pythonGIL的原理

2023-11-14

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取