Python 自定義 with/as

Python 自定義 with/as

with expression [as variable]:
    with-block

with 語句的實際工作方式:

  1. 計算表達式,所得到的對象成為環(huán)境管理器, 它必須有__enter____exit__方法;
  2. 環(huán)境管理器的__enter__方法會被調(diào)用。如果 as 子句存在,其返回值會賦值給 as 子語句中的變量,否則,直接丟棄。
  3. 代碼塊中嵌套的代碼會執(zhí)行。
  4. 如果 with 代碼塊引發(fā)異常,__exit__(type, value, trackback)方法會被調(diào)用(帶有異常細節(jié))。如果此方法返回值為False,則異常會重新引發(fā)。否則,異常會終止。
  5. 如果 with 代碼塊沒有引發(fā)異常,__exit__方法依然會被調(diào)用,其type, value以及trackback參數(shù)都會以None傳遞。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自:http://mp.weixin.qq.com/s/LO1yyFeUA6pR_YPyfDoSig 姓名:梅...
    虐先森閱讀 1,490評論 0 1
  • 本文轉(zhuǎn)自淺談Python的with語句 引言 with 語句是從 Python 2.5 開始引入的一種與異常處理相...
    Syfun閱讀 4,077評論 0 50
  • contextlib — Context Manager Utilities contextlib - 上下文管理...
    英武閱讀 2,992評論 0 52
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 術(shù)語 要使用 with 語句,首先要明白上下文管理器這一概念。有了上下文管理器,with 語句才能工作。下面是一組...
    lmem閱讀 347評論 0 0

友情鏈接更多精彩內(nèi)容