上下文管理器
任何實現了enter() 和exit() ⽅法的物件都可稱之為上下⽂管理
器,上下⽂管理器物件可以使⽤ with 關鍵字。顯然,⽂件(file)物件也實現
了上下⽂管理器
方法一
class
file()
:def
__init__
(self, filename, mode)
: self.filename = filename
self.mode = mode
def__enter__
(self)
:print
("entering"
) self.f =
open
(self.filename, self.mode)
return self.f
def__exit__
(self,
*args)
:print
("will exit"
) self.f.close(
)
enter() ⽅法返回資源物件,這⾥就是你將要開啟的那個⽂件物件,
exit() ⽅法處理⼀些清除⼯作。
因為 file 類實現了上下⽂管理器,現在就可以使⽤ with 語句了。
with file(
'out.txt'
,'w'
)as f:
print
("writing"
) f.write(
'hello, python'
)
這樣,你就⽆需顯示地調⽤ close ⽅法了,由系統⾃動去調⽤,哪怕中間遇
到異常 close ⽅法也會被調⽤。
方法二定義
from contextlib import contextmanager
@contextmanager
defmy_open
(path, mode)
: f =
open
(path, mode)
yield f
f.close(
)
調⽤
with my_open(
'out.txt'
,'w'
)as f:
f.write(
"hello , the ******st context manager"
)
with上下文管理器
在執行 with 語句時,首先執行 with 後面的 open 執行完 後,會將 的結果通過 as 儲存到 f 中 然後在下面實現真正要執行的操作 在操作後面,並不需要寫檔案的關閉操作,檔案會在使用完後自動關閉 實際上,在檔案操作時,並不是不需要寫檔案的關閉,而是檔案的關閉操作在 with 的上下文...
上下文管理器
今天我們聊聊上下文管理器,當然今天所談僅為個人觀點!今天如果不是學生面試回來跟我聊到了上下文管理器,我都忘了python中還有這麼個鬼了。特別寫一篇博文我們簡單聊聊。普通的檔案操作方式,例如 情況01 1 以寫的方式開啟檔案 f open 1.txt w 2 寫入檔案內容 f.write hello...
python 上下文管理器
上下文管理器允許你在有需要的時候,精確地分配和釋放資源。使用上下文管理器最廣泛的案例就是with語句了。想象下你有兩個需要結對執行的相關操作,然後還要在它們中間放置一段 上下文管理器就是專門讓你做這種事情的。舉個例子 with open some file w as opened file open...