with open("a.txt
") as f: #
開啟檔案,並自動關閉檔案
pass
#上下文管理協議
class
open:
def__init__
(self,name):
self.name =name
def__enter__
(self):
print("
執行enter")
(self)
return
self
def__exit__(self, exc_type, exc_val, exc_tb): #
當出現異常時,觸發,並返回__exit__中的三個引數
print("
執行exit")
print(exc_type) #
異常型別
print(exc_val) #
異常值print(exc_tb) #
異常traceback
return true #
retrue true 當出現異常時,直接吞沒異常,並結束with語句,程式繼續向下執行
with open(
"a.txt
") as f1: #
with時會觸發__enter__,拿到的結果是self,然後將self賦值給f1
(f1)
(f1.name)
print(ssssssssss) #
當這裡出現錯誤是,直接觸發__exit__,整個程式報錯結束,但返回true時,異常會被吞沒,with語句結束,程式繼續向下執行
print("
11111
") #
當with裡的**塊執行結束後,觸發__exit__
print("
000000000000
")
上下文管理協議
class open def init self,name self.name name def enter self print 執行enter def exit self,exc type,exc val,exc tb print 執行exit with open a.txt as f with...
上下文協議管理
with obj as f 塊 1.with obj 觸發obj.enter 拿到返回值 2.as f f 返回值 3.with obj as f 等同於 f obj.enter 4.執行 塊 一 沒有異常的情況下,整個 塊執行完畢後去觸發 exit 它的三個引數都為none 二 有異常的情況下,從...
python 上下文管理協議
class open def init self,name self.name name def enter self print 出現with語句,物件的 enter 被觸發,有返回值則賦值給as宣告的變數 return self def exit self,exc type,exc val,ex...