在定義foo時,定義了__enter__和__exit__方法,那麼我們例項化的物件obj就是乙個上下文管理器,
即含有__enter__和__exit__方法的物件就是上下文管理器。
所以在這裡可以用with
with 上下文管理器:
語句體
當with遇到上下文管理器時,執行順序:先執行上下文管理器的__enter__方法 -> 再執行語句體->最後執行__exit__方法.
舉例如下:
obj可以是單個變數或()括起來的元組;__enter__ 方法無返回左下圖,有返回右下圖,舉例如下:
常見的上下文管理的用法:
with open("/tmp/foo.txt") as file:
data = file.read()
如果使用傳統的 try/finally 正規化,則要使用類似如下**:
somefile = open(r'somefilename')
try:
for line in somefile:
print line
finally:
somefile.close()
使用 with 語句可以減少編碼量;不管在處理物件過程中是否發生異常,都能保證 with 語句執行完畢後,關閉了開啟物件
python上下文管理
重寫 enter 方法,返回值會被 as 捕獲 重寫 exit 方法 democlass mycontextmanager def enter self print 進入管理器範圍執行方法 此處的返回值會被 with xx as 捕獲 return 退出上下文管理範圍執行方法,即使中間報錯也會執行 ...
python 高階 with 上下文管理
with 上下文管理器 語法糖 python 提供的一種簡化語法,在編寫 時更加簡潔 with 就是眾多語法糖中的一種 with 執行原理 能通過with進行執行的語句,都是實現了上下文管理器 上下文管理器中包含兩個魔法方法 enter 和 exit enter 方法提供環境的初始化操作 exit ...
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...