02.26 python中with的用法

with是是一種上下文管理協議,目的在於從流程圖中把 try,except 和finally關鍵字和資源分配釋放相關代碼統統去掉,簡化try….except….finlally的處理流程。

with通過__enter__方法初始化,然後在__exit__中做善後以及處理異常,所以使用with處理的對象必須有__enter__()和__exit__()這兩個方法,其中__enter__()方法在語句體(with語句包裹起來的代碼塊)執行之前進入運行,exit()方法在語句體執行完畢退出後運行。

with 語句適用於對資源進行訪問的場合,確保不管使用過程中是否發生異常都會執行必要的“清理”操作,釋放資源,比如文件使用後自動關閉、線程中鎖的自動獲取和釋放等。

示例:

python中with的用法


with語句的工作原理:

緊跟with後面的語句會被求值,返回對象的__enter__()方法被調用,這個方法的返回值將被賦值給as關鍵字後面的變量,當with後面的代碼塊全部被執行完之後,將調用前面返回對象的__exit__()方法。with語句最關鍵的地方在於被求值對象必須有__enter__()和__exit__()這兩個方法,那我們就可以通過自己實現這兩方法來自定義with語句處理異常。

我們按照這個重寫一段:

python中with的用法

通過上面這個實例,我們就能更清楚的瞭解with的工作過程。


分享到:


相關文章: