with上下文管理器

python中的with关键字

我们经常使用到with的地方就是对文件进行读写操作的时候,我们不需要自己去close,自动会帮我们处理

with open('zx.txt','w') as f
	f.write('zx')

with的原理-上下文管理器

概念

任何实现了 __enter__()__exit__() 方法的对象都可称之为上下文管理器

手写一个文件操作的上下文管理器

首先初始化对象,然后with会去找类中的 __enter__() 方法,当return后,执行缩进的代码,最后执行 __exit__() 处理最后的操作

class file_zx:
    def __init__(self,file_name,do):
        self.file_name = file_name
        self.do = do

    def __enter__(self):
        self.fw = open(self.file_name,self.do)
        return self.fw

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.fw.close()

with file_zx('zx.log','w') as fw:
    fw.write('zxzxzx')
    
init
entry
over
exit
posted @ 2019-12-03 00:43  zx125  阅读(105)  评论(0编辑  收藏  举报