with open('a.txt') as f 这是协议,open('a.txt')是实例化,as是赋值或重命名,f是对象
with代码块出现异常,会跳到exit里,不出现异常则完毕后跳到exit里
异常是解释器检测到的,捕捉,需要追踪
class Open: def __init__(self,name): self.name=name def __enter__(self): print('触发ernter') return self def __exit__(self, exc_type, exc_val, exc_tb): print('触发exit') print(exc_type) print(exc_val) print(exc_tb) return True with Open('a.txt') as f: print('gggggggg') print(jjjj) print(123) print('结束')