自定義上下文管理器
# 上下文管理器: 在類裡面實現__enter__ 和 __exit__方法 建立物件就是上下文管理器
# 自定義上下文管理器類
class
file
(object):
def__init__
(self, file_name, file_mode)
: self.file_name = file_name
self.file_mode = file_mode
def__enter__
(self)
:# 上文方法,負責返回操作物件資源,比如:檔案物件,資料庫連線物件
self.
file
=open
(self.file_name, self.file_mode)
return self.
file
# 當with語句執行完成以後自動執行__exit__方法
def__exit__
(self, exc_type, exc_val, exc_tb)
:# 下文方法,負責釋放物件資源,比如: 關閉檔案,關閉資料庫連線物件
print
("over"
) self.
file
.close(
)# with 語句結合上下文管理器物件使用
with file(
"1.txt"
,"r")as
file
:# file_data = file.read()
# print(file_data)
file
.write(
"sss"
)
自定義上下文管理器–裝飾器方式實現
from contextlib import contextmanager
# 加上裝飾器這個**,那麼下面函式建立的物件就是乙個上下文管理器
@contextmanager
defmy_open
(file_name, file_mode)
:try
:file
=open
(file_name, file_mode)
# yield關鍵之前的**可以認為是上文方法,負責返回操作物件資源
yield
file
except exception as e:
print
(e)finally
:print
("over"
)# yield關鍵字後面的**可以任務是下文方法,負責釋放操作物件的資源
file
.close(
)# 普通函式不能結合with語句使用,with語句結合上下文管理器
with my_open(
"1.txt"
,"r")as
file
:# file_data = file.read()
# print(file_data)
file
.write(
'sss'
)
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 ...