欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python上下文管理器的深度剖析-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

宜川ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

本篇文章為大家展示了python上下文管理器的深度剖析,代碼簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

基本概念

·上下文管理協(xié)議(Context Management Protocol)

包含方法__enter__ 和 __exit__,支持該協(xié)議的對(duì)象要實(shí)現(xiàn)這兩個(gè)方法。

·上下文管理器( Content Manager )

支持上下文管理協(xié)議的對(duì)象,實(shí)現(xiàn)了__enter__ / __exit__方法。上下文管理器定義執(zhí)行with語句時(shí)要建立的運(yùn)行時(shí)上下文,負(fù)責(zé)執(zhí)行with語句塊上下文的進(jìn)入和退出操作。通常使用with語句調(diào)用上下文管理器。

·運(yùn)行時(shí)上下文( runtime context )

由上下文管理器創(chuàng)建,通過上下文管理器的__enter和__exit__方法實(shí)現(xiàn),__enter方法在語句體執(zhí)行之前進(jìn)入運(yùn)行時(shí)上下文,__exit__在語句題執(zhí)行完成后從上下文運(yùn)行時(shí)退出。

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

with 語句中跟在關(guān)鍵字with之后的表達(dá)式,該表達(dá)式返回一個(gè)上下文管理器對(duì)象。

·語句體(with-body)

with語句包裹起來的代碼塊,在執(zhí)行語句體之前調(diào)用上下文管理器的__enter__方法,執(zhí)行完語句體之后會(huì)執(zhí)行__exit__方法。

with不是上下文管理器。with只是一個(gè)語句。實(shí)現(xiàn)了__enter__和__exit__這兩個(gè)上下文管理協(xié)議方法的對(duì)象,都被稱作上下文管理器。
上下文管理器被with調(diào)用時(shí),會(huì)創(chuàng)建運(yùn)行時(shí)上下文,__enter__在語句體執(zhí)行之前進(jìn)入運(yùn)行時(shí)上下文,__exit__負(fù)責(zé)在語句執(zhí)行完成
之后退出。

with

with語句用上下文管理器定義的方法包裹一段代碼的執(zhí)行,等價(jià)于try...except..finally。with的主要作用是相當(dāng)于finally。

一、多個(gè)上下文管理器

with A() as a,B() as b:
  suite

二、上下文管理器類型

context manager 是Python中with語句用來定義運(yùn)行時(shí)上下文的對(duì)象,上下文管理器控制著進(jìn)/出運(yùn)行時(shí)上下文的功能,上下文管理器通常由with語句出發(fā),也可以直接通過他們的方法來調(diào)用它們。上下文管理器通常用于保存和恢復(fù)各式各樣的全局狀態(tài)、加解鎖資源和關(guān)閉文件的文件等。

自定義上下文管理器

class TraceBlock:
    def message(self, arg):
        print('running ' + arg)
    def __enter__(self):
        print('starting with block')
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        if exc_type is None:
            print('exited normally')
        else:
            print('raise an exception' + str(exc_type))
            return False
if __name__ == '__main__':
    with TraceBlock() as action:
        action.message('test1')
        raise Exception
        print('reached')

上下文裝飾器

因?yàn)樽远x裝飾器比較麻煩,用contextlib.contextmanager將生成器轉(zhuǎn)化為上下文管理器,不必創(chuàng)建一個(gè)類或單獨(dú)指定__enter__和__exit__方法。

@contextmanager
def message(arg):
    print('running' + arg)
    yield 
    print('hello')
if __name__ == '__main__':
    with message('hell'):
        print('ok')

裝飾器,用來裝飾一個(gè)生成器函數(shù),使這個(gè)生成器函數(shù)稱為一個(gè)上下文管理器。

包含yield的函數(shù)才是生成器函數(shù),即contextmanager裝飾的函數(shù)必須含有yield!

@contextmanager
def make_context():
    print('enter')
    try:
        yield {}
    except Exception as err:
        print('error', err)
    finally:
        print('exit')
if __name__ == '__main__':
    with make_context() as value:
        raise Exception
        print(value)

生成器函數(shù)中yield之前的語句在__enter__方法中執(zhí)行;yield之后的語句在__exit__中執(zhí)行;yield產(chǎn)生的值賦值給as子句中的variable變量。如果有異常產(chǎn)生,在上面的例子中,能夠被except捕獲。

上述內(nèi)容就是python上下文管理器的深度剖析,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

當(dāng)前標(biāo)題:python上下文管理器的深度剖析-創(chuàng)新互聯(lián)
文章位置:http://aaarwkj.com/article24/ccjjce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、做網(wǎng)站、網(wǎng)站內(nèi)鏈、全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站建設(shè)標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
亚洲欧美日韩有码一区| 日韩精品一二三黄色一级| 亚洲欧洲一区二区中文字幕| 青青操国产在线自偷自拍| 琪琪精品免费一区二区三区| 国产情侣自拍视频在线观看| 97精品少妇一区二区三区| 日韩欧美高清一区二区三区| 国产精品亚洲精品日韩在线| 精品少妇人妻一区二区三区| 日本视频天堂在线不卡| 亚洲av日韩高清在线观看| 日韩精品欧美中文字幕| 日韩欧美一二区久久麻豆| 亚洲日本欧美一区二区| 日本精品在线一区二区| 亚洲成人精品久久久| 一区二区三区不卡中文字幕| 成人激情视频在线观看| 欧美色高清视频在线播放| 97免费在线视频观看| 日韩欧美一区二区三级| 海角社区av在线播放| 日产精品一级二级三级爱| 日本人妻丰满熟妇久久| 日韩中字在线一区二区| 蜜臀av在线播放黑丝| 青青草成年人免费视频| 亚洲毛片免费视频久久| 中文字幕中出亚洲精品| 成人黄网站色大片免费观看| 日韩精品有码在线视频免费观看| 欧美日韩一区二区综合在线视频 | 国产乱国产乱老熟女视频| 国产三级三级三级三级三级| 大胆丰满邻居少妇在线观看| 一本之道高清久久久首页| 久久香蕉国产线看观看av| 色婷婷av一二三区竹菊| 手机黄色av免费在线网址| 国产三级国产精品国产专播|