av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

創(chuàng)新互聯(lián)Python教程:python中如何使用@contextmanage?

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

1、實現(xiàn)邏輯

(1)初始化一個 _GeneratorContextManager 類,構造方法接受了一個生成器 gen

(2)這個類實現(xiàn)了上下文管理器協(xié)議 __enter__ 和 __exit__

(3)執(zhí)行 with 時會進入到 __enter__ 方法,然后執(zhí)行這個生成器,執(zhí)行時會運行到 with 語法塊內的 yield 處

(4)__enter__ 返回 yield 的結果

(5)如果 with 語法塊沒有發(fā)生異常,with 執(zhí)行結束后,會進入到 __exit__ 方法,再次執(zhí)行生成器,這時會運行 yield 之后的代碼邏輯

(6)如果 with 語法塊發(fā)生了異常,__exit__ 會把這個異常通過生成器,傳入到 with 語法塊內,也就是把異常拋給調用者

2、使用實例

在Python中,可以使用裝飾器 @contextmanager來簡化上下文管理器,也就是不需要定義__enter__和__exit__方法。

class MyContent:
    def query(self):
        print('query data')
# 需要引入contextmanager
from contextlib import contextmanager
 
@contextmanager
def make_resource():
    print('first connect to resource')
    yield MyContent()
    print('close resource connection')
 
#應用上下文管理器
with make_resource() as r:
r.query()

以上就是python中使用@contextmanage的方法,大家在操作之前,一定要先就具體的@contextmanage實現(xiàn)邏輯進行了解,然后再展開相關的實例操作。


網(wǎng)站名稱:創(chuàng)新互聯(lián)Python教程:python中如何使用@contextmanage?
標題鏈接:http://uogjgqi.cn/article/djsossi.html
掃二維碼與項目經理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流