最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談python的上下文管理器with的用法

 更新時(shí)間:2023年07月21日 09:31:39   作者:發(fā)條宇  
這篇文章主要介紹了淺談python的上下文管理器with的用法,在一段代碼執(zhí)行前, 先執(zhí)行__enter__中的代碼用于預(yù)處理,然后執(zhí)行 with 中間的代碼,最后執(zhí)行完這段代碼之后再執(zhí)行 exit 中的代碼進(jìn)行清理工作,需要的朋友可以參考下

如何理解上下文管理器, 那就是有先 有后, 中間是要處理的東西。

舉個(gè)例子: 別墅獨(dú)立小院, 是不是有個(gè)大門(mén)。每天進(jìn)大門(mén)然后出大門(mén)(有先有后),中間呢 是你在這個(gè)小院里操作各種內(nèi)容,比如打水。

上下文管理器指符合上下文協(xié)議的一個(gè)類(lèi),類(lèi)中實(shí)現(xiàn)了__enter__方法 和 exit 方法。 在一段代碼執(zhí)行前, 先執(zhí)行__enter__中的代碼用于預(yù)處理,然后執(zhí)行 with 中間的代碼,最后執(zhí)行完這段代碼之后再執(zhí)行 exit 中的代碼進(jìn)行清理工作。

常見(jiàn)的如:

文件的操作:打開(kāi)文件,關(guān)閉文件
打開(kāi)數(shù)據(jù)庫(kù),關(guān)閉數(shù)據(jù)庫(kù)
入棧,出棧

都可以用上下文管理器來(lái)完成。

具體可以參考官網(wǎng)里這塊的代碼實(shí)現(xiàn)邏輯來(lái)加深理解。

上下文管理器格式:

class A():
    def __enter__(self):
        print('連接')
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        print('斷開(kāi)連接')
        if(exc_tb):
            print('出現(xiàn)異常')
        else:
            print('無(wú)異常')
        return True

__enter__方法實(shí)現(xiàn)資源的連接過(guò)程 __exit__方式實(shí)現(xiàn)了資源的斷開(kāi)過(guò)程

with語(yǔ)句基本結(jié)構(gòu)

with A() as b:
    # 相關(guān)操作代碼放這里
-------------------------
with A():
    # 相關(guān)操作代碼放這里

在with語(yǔ)句中的操作代碼執(zhí)行前,先執(zhí)行__enter__中的代碼;

操作代碼執(zhí)行完后,再執(zhí)行__exit__中的代碼 enter=>with=>exit

這段代碼里需要理解一下as b 在 with A() as b 中,b的值為_(kāi)_enter__方法的返回值,一般情況下會(huì)寫(xiě)self即返回上下文管理器對(duì)象本身,但是也可以返回其他內(nèi)容 __exit__方法中的參數(shù)除了self外還必須有exc_type,exc_val,exc_tb;

當(dāng)操作代碼部分沒(méi)有出現(xiàn)異常時(shí),三個(gè)參數(shù)的值都為空,當(dāng)操作代碼部分出現(xiàn)異常時(shí)分別傳入異常的類(lèi)型、信息、錯(cuò)誤堆棧 __exit__的返回值可以是True或False,當(dāng)返回True時(shí)若操作代碼出現(xiàn)異常則在with語(yǔ)句外將不會(huì)給出異常(在__exit__中處理異常),當(dāng)返回False時(shí)若操作代碼出現(xiàn)異常則在with語(yǔ)句外給出異常(由外部處理異常)

舉個(gè)數(shù)據(jù)庫(kù)的簡(jiǎn)單例子

class DataBase():
    def query(self):
        print('查詢(xún)數(shù)據(jù)庫(kù)')
    def __enter__(self):
        print('連接數(shù)據(jù)庫(kù)')
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        print('斷開(kāi)數(shù)據(jù)庫(kù)連接')
        if(exc_tb):
            print('出現(xiàn)異常')
        else:
            print('無(wú)異常')
        return True
with DataBase() as db:
    db.query()

在這里插入圖片描述

到此這篇關(guān)于淺談python的上下文管理器with的用法的文章就介紹到這了,更多相關(guān)python上下文管理器with內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?如何將?matplotlib?圖表集成進(jìn)到PDF?中

    Python?如何將?matplotlib?圖表集成進(jìn)到PDF?中

    這篇文章主要介紹了Python?如何將?matplotlib?圖表集成進(jìn)到PDF?中,文章介紹內(nèi)容詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-03-03
  • python實(shí)現(xiàn)求最長(zhǎng)回文子串長(zhǎng)度

    python實(shí)現(xiàn)求最長(zhǎng)回文子串長(zhǎng)度

    最長(zhǎng)回文子串問(wèn)題:給定一個(gè)字符串,求它的最長(zhǎng)回文子串長(zhǎng)度。如果一個(gè)字符串正著讀和反著讀是一樣的,那它就是回文串。今天我們就來(lái)探討下這個(gè)問(wèn)題
    2018-01-01
  • python中字符串變二維數(shù)組的實(shí)例講解

    python中字符串變二維數(shù)組的實(shí)例講解

    下面小編就為大家分享一篇python中字符串變二維數(shù)組的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python部署chineseocr_lite的實(shí)現(xiàn)示例

    python部署chineseocr_lite的實(shí)現(xiàn)示例

    本文主要介紹了python部署chineseocr_lite的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Python中實(shí)現(xiàn)從目錄中過(guò)濾出指定文件類(lèi)型的文件

    Python中實(shí)現(xiàn)從目錄中過(guò)濾出指定文件類(lèi)型的文件

    這篇文章主要介紹了Python中實(shí)現(xiàn)從目錄中過(guò)濾出指定文件類(lèi)型的文件,本文是一篇學(xué)筆記,實(shí)例相對(duì)簡(jiǎn)單,需要的朋友可以參考下
    2015-02-02
  • Kears+Opencv實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別

    Kears+Opencv實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別

    這篇文章主要為大家詳細(xì)介紹了Kears+Opencv實(shí)現(xiàn)簡(jiǎn)單人臉識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python3中set(集合)的語(yǔ)法總結(jié)分享

    python3中set(集合)的語(yǔ)法總結(jié)分享

    這篇文章主要總結(jié)了關(guān)于python3中set(集合)的語(yǔ)法的相關(guān)資料,文中給出了詳細(xì)的示例代碼,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • Python中time與datetime模塊使用方法詳解

    Python中time與datetime模塊使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Python中time與datetime模塊使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • Python API 自動(dòng)化實(shí)戰(zhàn)詳解(純代碼)

    Python API 自動(dòng)化實(shí)戰(zhàn)詳解(純代碼)

    今天小編就為大家分享一篇Python API 自動(dòng)化實(shí)戰(zhàn)詳解(純代碼),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 利用Pygame繪制圓環(huán)的示例代碼

    利用Pygame繪制圓環(huán)的示例代碼

    這篇文章主要介紹了利用Python中的Pygame模塊繪制一個(gè)彩色的圓環(huán),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Pygame有一定幫助,需要的可以參考一下
    2022-01-01

最新評(píng)論

商水县| 天津市| 永寿县| 博客| 那曲县| 沙河市| 辽阳市| 于都县| 砚山县| 商都县| 枞阳县| 长子县| 西畴县| 资溪县| 囊谦县| 钟山县| 得荣县| 深圳市| 西青区| 资阳市| 奈曼旗| 娄底市| 凤城市| 鹤峰县| 旅游| 治县。| 福建省| 贵州省| 盘锦市| 确山县| 班戈县| 融水| 汝南县| 贵定县| 贡觉县| 承德县| 抚顺县| 瑞安市| 青川县| 弥勒县| 叙永县|