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传递。

你可能感兴趣的:(Python 自定义 with/as)