phthon中的上下文管理器(python3 4)

2021-09-25 08:19:00 字數 1357 閱讀 3779

1.什麼是上下文管理器。

以下①②引用自python3.4api中關於with宣告、語句上下管理器2部分的解釋。

①.上下文管理器是乙個物件,它定義了在執行with語句時要建立的執行時上下文。通常使用with語句呼叫,但也可以通過直接呼叫它們的方法來使用。上下文管理器的典型用途包括儲存和恢復各種全域性狀態鎖定和解鎖資源關閉開啟的檔案(省去了file.close())等。

②.with語句用於對上下文管理器定義下的方法的執行。

乙個簡單的with使用如下:

with open(「text.txt」,encoding=「utf-8」) as file_in: #開啟text.txt檔案,將內容儲存到file_in中

for line in file_in:

print(line)

2.上下文管理器中的2個主要方法。

相當於:enter控制開始的資訊輸入到as指定的物件中,exit控制管理結束後的檔案關閉和內容清除。

__enter__(self) #輸入與此物件相關的執行時上下文。with語句將此方法的返回值繫結到語句as子句中指定的目標。

__exit__(self, exc_type, exc_value, traceback) #退出與此物件相關的執行時上下文。後三個引數描述了導致上下文退出的異常(異常型別,異常值,回溯追蹤)。如果上下文沒有異常地退出,則所有三個引數都為none。

舉個例子:以下**的輸出順序就是①->②文字中的所有資訊->③。

class file_read():

def __enter__(self):

print("this is enter") #①

f=open("text.txt",encoding="utf-8")

return f

def __exit__(self, exc_type, exc_val, exc_tb):

print("this is exit") #③

#以下2行**在沒有注釋掉的情況下也不會有任何輸出,應該是因為exit方法呼叫的時候已經將檔案關閉掉了;但是這個方法中的**是會被執行的

#for line in self.f:

# print(line+"test information")

if __name__== '__main__':

with file_read() as file_in:

for line in file_in:

print(line) #②

with上下文管理器

在執行 with 語句時,首先執行 with 後面的 open 執行完 後,會將 的結果通過 as 儲存到 f 中 然後在下面實現真正要執行的操作 在操作後面,並不需要寫檔案的關閉操作,檔案會在使用完後自動關閉 實際上,在檔案操作時,並不是不需要寫檔案的關閉,而是檔案的關閉操作在 with 的上下文...

with上下文管理器

上下文管理器 任何實現了enter 和exit 法的物件都可稱之為上下 管理 器,上下 管理器物件可以使 with 關鍵字。顯然,件 file 物件也實現 了上下 管理器 方法一class file def init self,filename,mode self.filename filename...

上下文管理器

今天我們聊聊上下文管理器,當然今天所談僅為個人觀點!今天如果不是學生面試回來跟我聊到了上下文管理器,我都忘了python中還有這麼個鬼了。特別寫一篇博文我們簡單聊聊。普通的檔案操作方式,例如 情況01 1 以寫的方式開啟檔案 f open 1.txt w 2 寫入檔案內容 f.write hello...