python - 上下文管理协议(with + __enter__ + __exit__)
上下文管理协议:
with + __enter__ + __exit__
#上下问管理协议: #with + __enter__ + __exit__ class Test(): def __init__(self,file): self.file = file def __enter__(self): print("执行enter") def __exit__(self, exc_type, exc_val, exc_tb): print("执行exit") #异常类型 print(exc_type) #异常的数值 print(exc_val) #异常的traceback print(exc_tb) # return True # with 开始执行时触发Test __enter__方法 # 当with 内的代码执行完后,执行__exit__方法 with Test("a.txt") as f: print(sadsada) #总结: # 执行代码块 # 1.没有异常的情况下,整个代码块运行完毕后去触发__exit__,它的三个参数都为None # 2.有异常的情况下,从异常出现的位置直接触发__exit__ # a.如果__exit__的返回值为True,代表吞掉了异常 # b.如果__exit__的返回值不为True,代表直接报异常 # 3.__exit__的运行完毕,代表了整个with语句的执行完毕. #用途: # 1.使用with语句的目的就是把代码放入with中执行,with结束后,自动完成清理工作,无须手动干预 # 2.在需要管理一些资源比如文件,网络链接和锁的编程环境,可以在__exit__中定制自动释放资源的机制,你无须再去关心这个问题.
既要脚踏实地,也需仰望天空