1. 程式人生 > >python知識點梳理--with語句

python知識點梳理--with語句

上下文管理協議與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表示什麼都沒有發生.