python中@contextmanager是什么?
发布时间: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的基本介绍。我相信你对这种直接实现上下文管理器的方法非常感兴趣。阅读文章后,您可以操作上述代码进行体验。
