Python中上下文管理器的理解與使用

2021-10-03 15:53:00 字數 1246 閱讀 2893

簡單來講上下文管理器就是with 語句

要自己實現這樣乙個上下文管理,要先知道上下文管理協議。

簡單點說,就是在乙個類裡,實現了enter和__exit__的方法,這個類的例項就是乙個上下文管理器。

# 上下文管理協議

class

sample

:def

__enter__

(self)

:print

("enter"

)# 獲取資源

return self

def__exit__

(self, exc_type, exc_val, exc_tb)

:# 釋放資源

print

("exit"

)def

do_something

(self)

:print

("doing something"

)with sample(

)as sample:

sample.do_something(

)

輸出結果:

enter

doing something

exit

從這個示例可以很明顯的看出,在編寫**時,可以將資源的連線或者獲取放在__enter__中,而將資源的關閉寫在__exit__ 中。

# 讓普通函式也可以使用上下文管理, 前提條件是add函式必須是生成器函式,且只有yield語句

from contextlib import contextmanager

@contextmanager

defadd

(x, y)

:print

('__enter__'

)# 第一步:呼叫__enter__

yield x + y # 第二步:返回__enter__函式的返回值給obj物件

print

('__exit__'

)# 第四步:呼叫__exit__

with add(1,

2)as obj:

print

(obj)

# 第三步:執行上下文語句塊

輸出結果:

__enter__

3__exit__

參考:上下文管理器

python 上下文管理器

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

python上下文管理器

上下文管理器是乙個包裝任意 塊的物件。上下文管理器保證進入上下文管理器時,每次 執行的一致性 當退出上下文管理器時,相關資源會被正確 這裡被正確 指的是在 exit 方法自定義 比如關閉資料庫游標 值得注意的是,上下文管理器一定能夠保證退出步驟的執行。如果進入上下文管理器,根據定義,一定會有退出步驟...

Python 上下文管理器

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