标签:with traceback 内存 协议 self 文件的 pre div 执行
<1>常规操作3步open:
1.f = open(‘a.txt‘)
2.对文件的操作
3.f.close()
上边两种操作 第二种操作因为打开文件之后必须关闭,不关闭占用内存的资源
而上下文管理协议就不会,
内存采用回收机制自动的去把对象清理掉
好处就是可以在exit方法中自动释放资源
<2>with
with open(‘a.txt‘) as f:
‘代码块‘
上述就是上下文管理协议 __enter__ __exit__
1 class Foo: 2 3 def __init__(self, name): 4 self.name = name 5 6 def __enter__(self): 7 print(‘执行enter方法‘) 8 return self 9 10 def __exit__(self, exc_type, exc_val, exc_tb): 11 print(‘执行exit方法‘) 12 print(exc_type) # <class ‘NameError‘> 13 print(exc_val) # name ‘aaaaaaaaa‘ is not defined 14 print(exc_tb) # <traceback object at 0x000001A2BAF90F08> 15 16 17 with Foo(‘a.txt‘) as f: # 触发enter 18 print(f) 19 # print(aaaaaaaaa) # 报错直接触发exit 20 print(f.name) # 代码块处理完毕之后 触发exit 21 22 print(‘1111111111111‘)
标签:with traceback 内存 协议 self 文件的 pre div 执行
原文地址:https://www.cnblogs.com/Alexephor/p/11219031.html