python 之 上下文管理器

首先說一下什麼叫上下文管理器

    在python中任何實現了 __enter__() 和 __exit__() 方法的對象都可稱之爲上下文管理器,

    上下文管理器對象可以使用 with 關鍵字

 

我們可以模擬實現一個類,讓該類實現 __enter__() 和 __exit__() 方法

class File():

    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode

    def __enter__(self):
        print("shangwen")
        self.f = open(self.filename, self.mode)
        return self.f

    def __exit__(self, *args):
        print("xiawen")
        self.f.close()


with File('mytest.txt', 'w') as f:
    print("正在寫入")
    f.write('。。。。。。。。')

這樣,你就無需顯示地調用 close 方法了,由系統自動去調用,哪怕中間遇到異常 close 方法也會被調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章