python上下文管理器

2021-08-14 09:39:06 字數 1150 閱讀 2477

上下文管理器是乙個包裝任意**塊的物件。上下文管理器保證進入上下文管理器時,每次**執行的一致性;當退出上下文管理器時,相關資源會被正確**(這裡被正確**指的是在__exit__方法自定義****,比如關閉資料庫游標)。

值得注意的是,上下文管理器一定能夠保證退出步驟的執行。如果進入上下文管理器,根據定義,一定會有退出步驟。即使內部的**丟擲異常,這點也成立。事實上,如果退出步驟處理合適,那麼上下文管理器的退出**為處理這類異常提供乙個機會(雖然不強制要求一定要處理異常)。

上下文管理器用得最多的就是作為確保資源被正確清理的一種方式。

上下文管理器要求物件必須定義乙個__enter__方法和乙個__exit__方法,且後者必須接受特定引數,前者除了self引數不接受任何其他引數。其中enter方法返回的值被賦給as後面的變數,exit方法如果返回true,那麼如果包裝的**塊執行出現異常,直譯器是不會丟擲異常的。

class contextmanager(object):

def __int__(self):

self.entered = false

def __enter__(self):

self.entered = true

return self

def __exit__(self, exc_type, exc_val, exc_tb): # 引數分別為異常型別,異常例項,異常回溯

self.entered = false

if exc_val:

print exc_val

return true

with contextmanager() as cm:

print cm.entered # true

print cm.entered # false

要注意的是上下文管理器執行完之後直譯器並不會****塊內的物件記憶體

python 上下文管理器

上下文管理器允許你在有需要的時候,精確地分配和釋放資源。使用上下文管理器最廣泛的案例就是with語句了。想象下你有兩個需要結對執行的相關操作,然後還要在它們中間放置一段 上下文管理器就是專門讓你做這種事情的。舉個例子 with open some file w as opened file open...

Python 上下文管理器

python中的上下文管理器是乙個包裝任意 塊的物件。它在處理資源的開啟關閉 異常的處理等方面有很好的實現方法。1.上下文管理器的語法 假設我們需要讀取乙個檔案中的資料,如下 try test file open test.txt r contents test file.read finally ...

python上下文管理器

上下文管理器可以通過使用更可讀 更精簡的 實現資源的分配與釋放 對於上下文管理器的使用,最常見的是使用with語句,with語句可構建資源的分配與釋放的語法糖。先拿最常見的例子來說,即檔案的開啟與關閉。正常語法 f file filename,w try f.write test file fina...