本文主要是介绍Python @contextmanager修饰器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
开发者可以使用内置的contextlib模块来处理自己所编写的对象和函数,使它们能够支持with语句。该模块提供了名为contextmanager的修饰器。函数只需要经过contextmanager修饰,即可用在with语句之中。这样做比标准写法更便捷。如果按照标准方式来做,那么要定义新类,并提供名为__center__和__exit__的特殊方法
from contextlib import contextmanager@contextmanager
def example():l = [1,2,3,4]print('start')try:# raise Exception('test')yield lfinally:print('end')with example() as msg:try:for i in msg:print(i)except:print(e.message)start
1
2
3
4
end
这里example返回一个对象。可以通过with复合语句中的as关键字来赋值给局部变量。这样可以使得with块中代码与外部交互。
with块所抛出的任何异常,都会由yield表达式重新抛出,开发者可以在辅助函数中捕获
作用:可以用with语句来改写try/finally中的逻辑,这样可以提升复用程度,时代码更加简洁
这篇关于Python @contextmanager修饰器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!