【发布时间】:2015-06-18 07:49:00
【问题描述】:
我对Python的with语句的理解如下:
with 语句 = with + 表达式 + as + 目标 + : + 西装
- 表达式被执行并返回一个上下文管理器
- 上下文管理器的
__enter__返回一个值给目标 - 套件被执行。
- 上下文管理器的
__exit__方法被调用
我知道在step2和step3中可以处理异常,我的问题是,如果在step1执行expression时抛出异常,我可以得到一个上下文管理器吗?
如果不是,这是否意味着 with 语句只是确保 suit 被正确执行和关闭?
如with open("file") as f,如果文件不存在会怎样?
【问题讨论】:
-
你已经想通了;如果 expression 引发异常,则不能有上下文管理器,所以不,
with语句无法处理。
标签: python with-statement contextmanager