Python context manager

內文管理器

python with 語句,能讓我們更輕易的實行資源管理,例如數據、開啟文件,或是各種會lock的行為。

要保證處理完相關事情,資源有被釋放。

簡單行為中,我們會這樣去開啟文件

test_file = open('test.txt', 'w')
try:
    test_file.write('line one')
finally:
    test_file.close()

上述行為除了是非慣用以外,

若try-finally裡面邏輯複雜,還面臨著維護的困難。

這裡有著使用 with 的簡單用法

with open('test.txt', 'w') as test_file:
    test_file.write('line one')

上述程式碼中,當 with 內的語句執行結束後,會自動關閉該資源,且變數test_file也會結束。

實現context manager

若想實現 context manager的功能,則要定義好__enter__ 與 __exit__ 兩個函式,分別管理with的進入行為和結束行為。



發表留言