亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

常見的如:

文件的操作:打開文件,關閉文件
打開數據庫,關閉數據庫
入棧,出棧

都可以用上下文管理器來完成。

具體可以參考官網里這塊的代碼實現(xiàn)邏輯來加深理解。

上下文管理器格式:

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

__enter__方法實現(xiàn)資源的連接過程 __exit__方式實現(xiàn)了資源的斷開過程

with語句基本結構

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

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

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

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

當操作代碼部分沒有出現(xiàn)異常時,三個參數的值都為空,當操作代碼部分出現(xiàn)異常時分別傳入異常的類型、信息、錯誤堆棧 __exit__的返回值可以是True或False,當返回True時若操作代碼出現(xiàn)異常則在with語句外將不會給出異常(在__exit__中處理異常),當返回False時若操作代碼出現(xiàn)異常則在with語句外給出異常(由外部處理異常)

舉個數據庫的簡單例子

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

在這里插入圖片描述

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

相關文章

  • python 讀取以空格分開的文件操作

    python 讀取以空格分開的文件操作

    這篇文章主要介紹了python 讀取以空格分開的文件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python 圖片視頻模糊化實現(xiàn)案例

    Python 圖片視頻模糊化實現(xiàn)案例

    本文主要分享一個可以將圖片或者視頻模糊化的工具代碼。技術路線主要是使用ffmpeg濾鏡。感興趣的小伙伴可以看一看
    2021-11-11
  • python爬蟲之爬取百度翻譯

    python爬蟲之爬取百度翻譯

    這篇文章主要介紹了python爬蟲之爬取百度翻譯,文中有非常詳細的代碼示例,對正在學習python的小伙伴們喲喲非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Pyecharts V1和V0.5之間相互切換的方法

    Pyecharts V1和V0.5之間相互切換的方法

    這篇文章主要介紹了Pyecharts V1和V0.5之間相互切換的方法,Pyecharts這個可視化庫火爆,官方如是說:Echarts 是一個由百度開源的數據可視化,憑借著良好的交互性,精巧的圖表設計,得到了眾多開發(fā)者的認可,下面和小編一起進入文章了解具體內容吧
    2022-02-02
  • Python股票開源庫akshare的具體使用

    Python股票開源庫akshare的具體使用

    AKShare是一個開源財經數據接口庫,本文主要介紹了Python股票開源庫akshare的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • windows下python連接oracle數據庫

    windows下python連接oracle數據庫

    這篇文章主要為大家詳細介紹了windows下python連接oracle數據庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • MATLAB 全景圖切割及盒圖顯示的實現(xiàn)步驟

    MATLAB 全景圖切割及盒圖顯示的實現(xiàn)步驟

    本文給大家分兩部分介紹,第一部分通過圖文的形式給大家介紹了全景圖切割的代碼,第二部分給大家介紹了盒圖展示效果的實現(xiàn)代碼,對MATLAB 全景圖切割相關知識感興趣的朋友,跟隨小編一起看看吧
    2021-05-05
  • python如何獲取網絡數據

    python如何獲取網絡數據

    這篇文章主要介紹了python如何獲取網絡數據,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-04-04
  • Tensorflow 自帶可視化Tensorboard使用方法(附項目代碼)

    Tensorflow 自帶可視化Tensorboard使用方法(附項目代碼)

    這篇文章主要介紹了Tensorflow 自帶可視化Tensorboard使用方法(附項目代碼),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • python 數字轉換為日期的三種實現(xiàn)方法

    python 數字轉換為日期的三種實現(xiàn)方法

    在Python中,我們經常需要處理日期和時間,本文主要介紹了python 數字轉換為日期的三種實現(xiàn)方法,包含datetime模塊,strftime方法及pandas庫,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02

最新評論