Python之上下文管理协议
Posted alexephor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之上下文管理协议相关的知识,希望对你有一定的参考价值。
一、上下文管理协议
<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‘)
以上是关于Python之上下文管理协议的主要内容,如果未能解决你的问题,请参考以下文章