Python 自定义 with/as

Python 自定义 with/as

with expression [as variable]:
    with-block

with 语句的实际工作方式:

  1. 计算表达式,所得到的对象成为环境管理器, 它必须有__enter____exit__方法;
  2. 环境管理器的__enter__方法会被调用。如果 as 子句存在,其返回值会赋值给 as 子语句中的变量,否则,直接丢弃。
  3. 代码块中嵌套的代码会执行。
  4. 如果 with 代码块引发异常,__exit__(type, value, trackback)方法会被调用(带有异常细节)。如果此方法返回值为False,则异常会重新引发。否则,异常会终止。
  5. 如果 with 代码块没有引发异常,__exit__方法依然会被调用,其type, value以及trackback参数都会以None传递。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自:http://mp.weixin.qq.com/s/LO1yyFeUA6pR_YPyfDoSig 姓名:梅...
    虐先森阅读 1,454评论 0 1
  • 本文转自浅谈Python的with语句 引言 with 语句是从 Python 2.5 开始引入的一种与异常处理相...
    Syfun阅读 4,031评论 0 50
  • contextlib — Context Manager Utilities contextlib - 上下文管理...
    英武阅读 2,887评论 0 52
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 术语 要使用 with 语句,首先要明白上下文管理器这一概念。有了上下文管理器,with 语句才能工作。下面是一组...
    lmem阅读 310评论 0 0