首頁(yè)技術(shù)文章正文

什么是上下文管理器?有什么作用?

更新時(shí)間:2021-03-10 來(lái)源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

with語(yǔ)句之所以能夠自動(dòng)關(guān)閉資源,是因?yàn)樗褂昧艘环N名為上下文管理的技術(shù)管理資源。接下來(lái),對(duì)上下文管理器的知識(shí)進(jìn)行介紹。

1.上下文管理協(xié)議(Context Manager Protocol)

上下文管理協(xié)議包括了__enter__()和__exit__()方法,支持該協(xié)議的對(duì)象均需要實(shí)現(xiàn)了這兩個(gè)方法。__enter__()和__exit__()方法的含義與用途如下所示:

__enter__(self):進(jìn)入上下文管理器時(shí)調(diào)用此方法,它的返回值被放入with-as語(yǔ)句as說(shuō)明符指定的變量中。

__exit__(self, type, value, traceback):離開(kāi)上下文管理器時(shí)調(diào)用此方法。在__exit__()方法中,參數(shù)type、value、traceback的含義分別為:異常的類型、異常值、異常回溯追蹤。如果__exit__()方法內(nèi)部引發(fā)異常,該異常會(huì)覆蓋掉其執(zhí)行體中引發(fā)的異常。處理異常時(shí)不需要重新拋出異常,只需要返回False。

2.上下文管理器(Context Manager)

支持上下文管理協(xié)議的對(duì)象就是上下文管理器,這種對(duì)象實(shí)現(xiàn)了__enter__()和__exit__()方法。通過(guò)with語(yǔ)句即可調(diào)用上下文管理器,它負(fù)責(zé)建立運(yùn)行時(shí)的上下文。

3.上下文表達(dá)式(Context Expression)

with語(yǔ)句中關(guān)鍵字with之后的表達(dá)式返回一個(gè)支持上下文管理協(xié)議的協(xié)議的對(duì)象,也就是返回一個(gè)上下文管理器。

4.運(yùn)行時(shí)上下文

由上下文管理器創(chuàng)建,通過(guò)上下文管理器的__enter__()和__exit__()方法實(shí)現(xiàn)。__enter__()方法在語(yǔ)句體執(zhí)行之前執(zhí)行,__exit__()方法在語(yǔ)句體執(zhí)行之后執(zhí)行。


猜你喜歡

Python怎樣進(jìn)行內(nèi)存管理?

python常見(jiàn)異常類型介紹

什么是Python模塊?Python模塊分為幾類?

Python+數(shù)據(jù)分析課程

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!