新聞中心
本文教程操作環(huán)境:windows7系統(tǒng)、python 3.9.1,DELL G3電腦。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),猇亭企業(yè)網(wǎng)站建設(shè),猇亭品牌網(wǎng)站建設(shè),網(wǎng)站定制,猇亭網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,猇亭網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
1、原理
with實(shí)際上是python中的關(guān)鍵字,它可以開(kāi)啟一個(gè)對(duì)象的上下文管理器協(xié)議,實(shí)際上,在文件操作時(shí),并不是不需要寫(xiě)文件的關(guān)閉,而是文件的關(guān)閉操作在 with 的上下文管理器中的協(xié)議方法里已經(jīng)寫(xiě)好了。當(dāng)文件操作執(zhí)行完成后, with語(yǔ)句會(huì)自動(dòng)調(diào)用上下文管理器里的關(guān)閉語(yǔ)句來(lái)關(guān)閉文件資源。
2、注意
上下文管理器一定能夠保證退出步驟的執(zhí)行。如果進(jìn)入上下文管理器,根據(jù)定義,一定會(huì)有退出步驟。即使內(nèi)部的代碼拋出異常,這點(diǎn)也成立。事實(shí)上,如果退出步驟處理合適,那么上下文管理器的退出代碼為處理這類異常提供一個(gè)機(jī)會(huì)(雖然不強(qiáng)制要求一定要處理異常)。
3、實(shí)例
class TestContext:
def __enter__(self):
print('__enter__')
return 1
def __exit__(self, exc_type, exc_value, exc_tb):
print('exc_type: %s' % exc_type)
print('exc_value: %s' % exc_value)
print('exc_tb: %s' % exc_tb)
with TestContext() as t:
print('t: %s' % t)
# Output:
# __enter__
# t: 1
# exc_type: None
# exc_value: None
# exc_tb: None
在這個(gè)例子中,我們定義了 TestContext 類,它分別實(shí)現(xiàn)了 __enter__ 和 __exit__ 方法。
這樣一來(lái),我們就可以把 TestContext 當(dāng)做一個(gè)「上下文管理器」來(lái)使用,也就是通過(guò) with TestContext() as t 方式來(lái)執(zhí)行。
從輸出結(jié)果我們可以看到,具體的執(zhí)行流程如下:
__enter__ 在進(jìn)入 with 語(yǔ)句塊之前被調(diào)用,這個(gè)方法的返回值賦給了 with 后的 t 變量;
__exit__ 在執(zhí)行完 with 語(yǔ)句塊之后被調(diào)用。
以上就是上下文管理器在python中的原理,通過(guò)本篇文章的學(xué)習(xí),我們可以了解具體with的執(zhí)行方法,以及兩種方法的實(shí)現(xiàn),希望對(duì)大家使用上下文管理器有所幫助。更多Python高級(jí)指路:python創(chuàng)新互聯(lián)教程
網(wǎng)頁(yè)題目:創(chuàng)新互聯(lián)Python教程:上下文管理器在python中的原理
標(biāo)題URL:http://www.5511xx.com/article/dhohocd.html


咨詢
建站咨詢
