Return value of __exit__
我明白
__enter__ 和__exit__ 用于实现上下文管理器。如果在
with 语句中发生异常,则将异常的类型、值和回溯传递给__exit__ 方法。__exit__ 可以处理异常:- 返回
True :异常处理得当。 - 返回任何其他内容:
with 语句引发异常
我遇到了下面的
1 2 3 | def __exit__(self, type, value, traceback): self.close() return type == None |
在我看来,
- 如果没有发生异常,那么
type 自然就是None ,所以__exit__ 返回真值。什么都没提。 - 如果发生了异常,则将
type 设置为实际的异常类型,因此__exit__ 返回false。异常按原样引发。
是的,那个返回语句是多余的。只有当
从
If an exception is supplied, and the method wishes to suppress the exception (i.e., prevent it from being propagated), it should return a true value. Otherwise, the exception will be processed normally upon exit from this method.
请注意,一个真实的值将抑制例外;因此,
删除该