上下文管理器
在执行某功能时,将其放在一个代码块中处于执行状态,一旦离开代码块执行另外的操作时,则结束状态,就是确保资源被正确清理的一种方式
自定义一个上下文管理器
首先了解两个方法:__enter__ 和 __exit__
enter
__enter__方法除了传统的self参数以外,不接受其他任何参数,当对象返回时该方法被执行,如果后面有AS变量,则将返回值赋值给as后面的变量,进入代码块前被调用
__exit__方法除了传统的self参数外,还带有三个位置参数,一个异常类型,一个异常实例,一个回溯,没有异常时三个参数被设置为None,此方法用在离开代码块之后被调用(包括在代码块中遇到了异常)