当前位置: 首页 > 图灵资讯 > 行业资讯> python中@contextmanager是什么?

python中@contextmanager是什么?

来源:图灵python
时间: 2024-09-09 10:20:41

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

1、概念

contextlib模块提供的装饰器用于在不创建类别或单独__的情况下管理函数声明的上下文enter___()方法exit__()方法可以实现上下文管理。

2、注意

装饰器@contextmanager的真正用法不是简化上下文管理器,而是定义上下文管理器的方法,将不是上下文管理器的类别变成上下文管理器。

3、实例

fromcontextlibimportcontextmanager

importtime



@contextmanager

defdemo(label):

start=time.time()

try:

yield

finally:

end=time.time()

print('{}:{}'.format(label,end-start))



withdemo('counting'):

n=10000000

whilen>0:

n-=1



#counting:1.32399988174

看上面的例子,函数中yield之前的研究所代码类似于上下文管理器__enter__方法内容。yield后的所有代码都是__exit__方法内容。如果执行过程中出现异常,则会触发yield语句。

以上是python中@contextmanager的基本介绍。我相信你对这种直接实现上下文管理器的方法非常感兴趣。阅读文章后,您可以操作上述代码进行体验。