python知識點梳理--with語句
阿新 • • 發佈:2018-12-17
上下文管理協議與with語句
with語句適用於對資源進行訪問的場合, 確保不管使用過程中是否會發生異常都會執行必要的清理操作, 釋放資源, 比如檔案使用後自動關閉、執行緒中鎖的自動獲取和釋放等.
上下文管理器
上下文管理器是指定義了__enter__函式和__exit__函式的類的物件,這種物件支援上下文管理協議. 上下文管理協議是指在類中定義__enter函式和__exit().
with context_expr as sth:
some code
context_expr是一個上下文管理器. Python中的with語句要求物件實現__enter__和__exit__函式, 呼叫with語句時, 會先呼叫__enter__函式;在退出時則會呼叫__exit__函式. __exit__函式一方面可以釋放資源, 另一方面則可以處理異常.
如果是以下語句: with context_expr() as sth, 那麼在呼叫__enter__函式後, 將返回值寫入sth中.
注意__exit__()函式有三個引數:exc_ty、 exc_val、tb. 其中exc_ty表示異常型別, exc_val表示異常值, tb表示對異常的追溯. exit()可以以某種方式來使用異常資訊, 或者返回None表示什麼都沒有發生.