上下文管理python
上下文管理就是在執行一段代碼塊的時候,經過一個裝飾器函數,在執行代碼塊以前到裝飾器函數裏作一個操做,而後執行代碼塊,執行代碼塊以後再到裝飾器函數裏作另一個操做函數
要使用上下文管理首先要 import contextlib 導入上下文管理模塊spa
@contextlib.contextmanager 定義上下文管理裝飾器,寫在下文管理裝飾器函數上面code
yield 遇到yield,跳出裝飾器函數,執行代碼塊後,在回到yield這裏向下執行blog
with 執行上下文管理裝飾器,後面寫要執行的下文管理裝飾器名稱,裏面寫代碼塊it
上下文管理使用代碼class
#!/usr/bin/env python # -*- coding:utf8 -*- import contextlib #導入上下文管理模塊 a = "1" b = "2" @contextlib.contextmanager #定義上下文管理裝飾器 def f(a,b): #定義上下文管理裝飾器函數,設置形式參數來接收實際參數 print("執行代碼塊以前,操做",a) #執行代碼塊以前打印 try: yield #遇到yield,跳出裝飾器函數,執行代碼塊後,在回到yield這裏向下執行 finally: print("執行代碼塊以後,操做",b) ##執行代碼塊以後打印 with f(a, b): #執行下文管理裝飾器函數,傳入實際參數 print("執行代碼塊") # 輸出 # 執行代碼塊以前,操做 1 # 執行代碼塊 # 執行代碼塊以後,操做 2
上下文管理原理圖import