搜索
您的当前位置:首页正文

上下文管理器- with块

来源:二三娱乐

with语句的目的是简化try/finally的使用,保证代码运行完后执行某项操作,即使出现了异常或者其他语句而退出

上下文管理器协议包含 enterexit 两个方法。with 语句开始运行时,会在 上下文管理器对象上调用 enter 方法。with 语句运行结束后,会在上下文管理器对 象上调用 exit 方法,以此扮演 finally 子句的角色。

with open("a.py") as fn:
      src = fn.read(5)

任何一个类实现了上述的两个方法,均可以视为一个管理器,__enter__,__exit__ 也可以手动调用,__exit__ 接收三个参数,分别是异常类型,异常实例,以及traceback对象

 def __enter__(self):  
        ....
        return 'xxxx' 

 def __exit__(self, exc_type, exc_value, traceback):  
       
        if exc_type is ZeroDivisionError: 
            print('Please DO NOT divide by zero!')
            return True 
Top