黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > python的上下文管理器

python的上下文管理器

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-07 01:19:31 1699291171

首先,我們來(lái)看一下with的語(yǔ)法格式:

withcontext_expression[astarget(s)]:with-body

with語(yǔ)法非常簡(jiǎn)單,我們只需要with一個(gè)表達(dá)式,然后就可以執(zhí)行自定義的業(yè)務(wù)邏輯。

但是,with后面的表達(dá)式是可以任意寫(xiě)的嗎?

答案是否定的。要想使用with語(yǔ)法塊,with后面的的對(duì)象需要實(shí)現(xiàn)「上下文管理器協(xié)議」。

什么是「上下文管理器協(xié)議」?

一個(gè)類(lèi)在Python中,只要實(shí)現(xiàn)以下方法,就實(shí)現(xiàn)了「上下文管理器協(xié)議」:

__enter__:在進(jìn)入with語(yǔ)法塊之前調(diào)用,返回值會(huì)賦值給with的target

__exit__:在退出with語(yǔ)法塊時(shí)調(diào)用,一般用作異常處理

我們來(lái)看實(shí)現(xiàn)了這2個(gè)方法的例子:

classTestContext:def__enter__(self):print('__enter__')return1def__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)withTestContext()ast:print('t:%s'%t)#Output:#__enter__#t:1#exc_type:None#exc_value:None#exc_tb:None

在這個(gè)例子中,我們定義了TestContext類(lèi),它分別實(shí)現(xiàn)了__enter__和exit方法。

這樣一來(lái),我們就可以把TestContext當(dāng)做一個(gè)「上下文管理器」來(lái)使用,也就是通過(guò)withTestContext()ast方式來(lái)執(zhí)行。

從輸出結(jié)果我們可以看到,具體的執(zhí)行流程如下:

__enter__在進(jìn)入with語(yǔ)句塊之前被調(diào)用,這個(gè)方法的返回值賦給了with后的t變量

__exit__在執(zhí)行完with語(yǔ)句塊之后被調(diào)用

如果在with語(yǔ)句塊內(nèi)發(fā)生了異常,那么__exit__方法可以拿到關(guān)于異常的詳細(xì)信息:

exc_type:異常類(lèi)型

exc_value:異常對(duì)象

exc_tb:異常堆棧信息

我們來(lái)看一個(gè)發(fā)生異常的例子,觀察__exit__方法拿到的異常信息是怎樣的:

withTestContext()ast:#這里會(huì)發(fā)生異常a=1/0print('t:%s'%t)#Output:#__enter__#exc_type:#exc_value:integerdivisionormodulobyzero#exc_tb:#Traceback(mostrecentcalllast):#File"base.py",line16,in#a=1/0#ZeroDivisionError:integerdivisionormodulobyzero

從輸出結(jié)果我們可以看到,當(dāng)with語(yǔ)法塊內(nèi)發(fā)生異常后,__exit__輸出了這個(gè)異常的詳細(xì)信息,其中包括異常類(lèi)型、異常對(duì)象、異常堆棧。

如果我們需要對(duì)異常做特殊處理,就可以在這個(gè)方法中實(shí)現(xiàn)自定義邏輯。

回到最開(kāi)始我們講的,使用with讀取文件的例子。之所以with能夠自動(dòng)關(guān)閉文件資源,就是因?yàn)閮?nèi)置的文件對(duì)象實(shí)現(xiàn)了「上下文管理器協(xié)議」,這個(gè)文件對(duì)象的__enter__方法返回了文件句柄,并且在__exit__中實(shí)現(xiàn)了文件資源的關(guān)閉,另外,當(dāng)with語(yǔ)法塊內(nèi)有異常發(fā)生時(shí),會(huì)拋出異常給調(diào)用者。

偽代碼可以這么寫(xiě):

classFile:def__enter__(self):returnfile_objdef__exit__(self,exc_type,exc_value,exc_tb):#with退出時(shí)釋放文件資源file_obj.close()#如果with內(nèi)有異常發(fā)生拋出異常ifexc_typeisnotNone:raiseexception

這里我們小結(jié)一下,通過(guò)對(duì)with的學(xué)習(xí),我們了解到,with非常適合用需要對(duì)于上下文處理的場(chǎng)景,例如操作文件、Socket,這些場(chǎng)景都需要在執(zhí)行完業(yè)務(wù)邏輯后,釋放資源。

以上內(nèi)容為大家介紹了python的上下文管理器,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.e7g2kmi.cn/

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專(zhuān)屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
Python處理文件的幾個(gè)常用小知識(shí)

python這門(mén)語(yǔ)言有個(gè)很大的用途就是使用它來(lái)進(jìn)行文件處理,學(xué)會(huì)處理文件和保存數(shù)據(jù)可以讓你的程序使用起來(lái)更加容易和方便,因此小編為大家準(zhǔn)備了...詳情>>

2023-11-07 03:54:20
python經(jīng)典最短代碼實(shí)現(xiàn)排序的功能

冒泡排序:算法思想:1.比較相鄰的元素,如果第一個(gè)比第二個(gè)大,則交換他們的位置;2.依次對(duì)每一對(duì)的元素進(jìn)行比較,如果前一個(gè)比后一個(gè)大,則交...詳情>>

2023-11-07 03:50:44
Python五大應(yīng)用領(lǐng)域

1、Linux運(yùn)維用python實(shí)現(xiàn)的測(cè)試工具及過(guò)程,包含服務(wù)器端、客戶端、web、andriod、client端的自動(dòng)化測(cè)試,自動(dòng)化性能測(cè)試的執(zhí)行、監(jiān)控和分析,...詳情>>

2023-11-07 03:25:32
Python與Node.JS

在進(jìn)行新項(xiàng)目時(shí)選擇正確的編程語(yǔ)言可能是程序員經(jīng)常做出的比較艱巨的決定之一。這個(gè)挑戰(zhàn)背后的原因是,每個(gè)新項(xiàng)目都會(huì)遇到一個(gè)獨(dú)特的問(wèn)題,并且...詳情>>

2023-11-07 03:14:44
如何殺死一個(gè)Python線程

我經(jīng)常被問(wèn)到如何殺死一個(gè)后臺(tái)線程,這個(gè)問(wèn)題的答案讓很多人不開(kāi)心:線程是殺不死的。在本文中,我將向您展示Python中用于終止線程的兩個(gè)選項(xiàng)。...詳情>>

2023-11-07 02:56:44
快速通道
国产高清在线精品一区二区| 日韩专区一区| 成人a大片高清在线观看| 国产视频一区二区在线播放| 亚洲女初尝黑人巨高清在线观看| 九九九国产| 国产一区二区精品久久| 你懂的福利视频| 国产成a人片在线观看视频 | 成人在激情在线视频| 色综合久久天天综合绕观看| 免费一级片在线| 国产一区二区精品尤物| 美女免费精品高清毛片在线视| 亚欧乱色一区二区三区| 一级片免费在线观看视频| 国产网站在线| 四虎久久影院| 国产伦久视频免费观看 视频| 高清一级淫片a级中文字幕 | 日本免费乱理伦片在线观看2018| 精品久久久久久中文字幕2017| 韩国毛片| 日韩在线观看视频免费| 青青久热| 四虎久久影院| 亚洲精品永久一区| 国产成人欧美一区二区三区的| 国产视频一区二区三区四区| 精品久久久久久中文| 精品国产一区二区三区久久久狼| 91麻豆精品国产高清在线| 国产91精品系列在线观看| 欧美a级片免费看| 青青久久精品| 国产成人精品一区二区视频| 久久99中文字幕久久| 精品久久久久久中文| 午夜在线亚洲男人午在线| 日韩专区一区| 天天做人人爱夜夜爽2020毛片| 999久久狠狠免费精品| 日韩在线观看免费| 中文字幕97| 成人免费网站视频ww| 国产成a人片在线观看视频| 色综合久久天天综合绕观看| 日韩一级黄色大片| 国产a视频| 欧美另类videosbestsex久久| 欧美激情一区二区三区视频| 国产成人精品影视| 99热视热频这里只有精品| 精品视频在线观看一区二区| 美国一区二区三区| 成人免费福利片在线观看| 久久国产精品永久免费网站| 韩国三级一区| 日韩字幕在线| 成人免费观看网欧美片| 99色视频| 色综合久久手机在线| 一级毛片视频免费| a级精品九九九大片免费看| 久久精品店| 国产91精品一区| 精品美女| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产成人女人在线视频观看| 亚洲第一色在线| 精品国产香蕉在线播出| 99久久精品国产高清一区二区| 日本免费乱人伦在线观看 | 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 九九久久国产精品| 香蕉视频亚洲一级| 欧美18性精品| 成人免费观看男女羞羞视频| 国产伦精品一区三区视频| 欧美α片无限看在线观看免费| 国产成a人片在线观看视频 | 亚洲精品久久玖玖玖玖| 日韩专区一区| 中文字幕一区二区三区精彩视频| 免费国产在线观看| 久久精品欧美一区二区| 青青久热| 九九九国产| 日本免费乱人伦在线观看 | 国产成人啪精品| 日韩在线观看视频黄| 99色吧| 二级特黄绝大片免费视频大片| 精品视频在线观看免费 | 国产激情一区二区三区| 精品国产一区二区三区久久久蜜臀 | 亚欧视频在线| 午夜在线亚洲| 美国一区二区三区| 一a一级片| 国产欧美精品| 欧美国产日韩在线| 欧美爱色| 国产麻豆精品视频| 欧美a免费| 一级毛片视频播放| 欧美激情一区二区三区在线播放| 欧美一级视频免费| 国产一区精品| a级毛片免费观看网站| 黄视频网站免费| 精品久久久久久中文字幕一区| 日本免费看视频| 国产不卡精品一区二区三区| 成人a大片在线观看| 亚久久伊人精品青青草原2020| 麻豆污视频| 成人在免费观看视频国产| 亚欧乱色一区二区三区| 天天色成人网| 一级女性大黄生活片免费| 欧美激情一区二区三区视频 | 久久精品欧美一区二区| 国产麻豆精品hdvideoss| 国产91精品露脸国语对白| 在线观看导航| 国产不卡在线播放| 午夜欧美成人久久久久久| 免费的黄色小视频| 天天色色网| 可以免费看毛片的网站| 国产不卡在线看| 午夜家庭影院| 99色视频在线| 欧美1区| 午夜久久网| 亚洲爆爽| 尤物视频网站在线观看| 天天做日日爱| 国产视频一区二区在线观看| 欧美1卡一卡二卡三新区| 999久久久免费精品国产牛牛| 国产网站在线| 一级毛片视频免费| 成人免费福利片在线观看| 欧美激情一区二区三区视频 | 欧美激情伊人| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 九九热精品免费观看| 国产一区免费在线观看| 国产成人精品一区二区视频| 青青久久精品| 精品国产亚一区二区三区| 999久久狠狠免费精品| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 97视频免费在线观看| 欧美日本免费| 99久久精品国产免费| 国产福利免费观看| 色综合久久手机在线| 你懂的在线观看视频| 久久精品店| 九九九在线视频| 99久久网站| 99热精品在线| 青青青草影院| 99久久精品国产国产毛片| 香蕉视频亚洲一级| 亚洲天堂在线播放| 韩国毛片| 九九九网站| 国产欧美精品| 免费一级片网站| 二级特黄绝大片免费视频大片| 四虎久久精品国产| 精品在线免费播放| 国产一区二区精品尤物| 亚欧乱色一区二区三区| 久久国产精品自线拍免费| 一本高清在线| 国产一区二区精品久| 九九热精品免费观看| 日韩在线观看免费| 青青青草影院| 免费国产在线观看| 欧美一区二区三区性| 日本免费乱理伦片在线观看2018| 久久99爰这里有精品国产| 国产伦精品一区二区三区无广告| 久久国产精品只做精品| 久久久久久久久综合影视网| 色综合久久天天综合绕观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人影院久久久久久影院| 精品久久久久久中文| 欧美爱爱动态| 一本高清在线| 九九国产| 精品视频在线观看视频免费视频 |