python中with的用法,上下文管理器
生活随笔
收集整理的這篇文章主要介紹了
python中with的用法,上下文管理器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、上下文管理器
含有__enter__和__exit__方法的對象就是上下文管理器
class Foo(object):def __init__(self):print('實例化一個對象')def __enter__(self):print('進(jìn)入')def __exit__(self, exc_type, exc_val, exc_tb):print('退出')# return Trueobj = Foo()with obj:print('正在執(zhí)行')執(zhí)行結(jié)果:
實例化一個對象 進(jìn)入 正在執(zhí)行 退出因為我們在定義Foo時,定義了__enter__和__exit__方法,那么我們實例化的對象obj就是一個上下文管理器,
二、with 上下文管理器:
with 上下文管理器:語句體當(dāng)with遇到上下文管理器,就會在執(zhí)行語句體之前,先執(zhí)行上下文管理器的__enter__方法,然后再執(zhí)行語句體,執(zhí)行完語句體后(無論語句體是否報錯),最后執(zhí)行上下文管理器的__exit__方法
語句體出現(xiàn)異常時,如果 exit 返回 False(默認(rèn)不寫返回值時,即為False),則會重新拋出異常,讓with 之外的語句邏輯來處理異常,這也是通用做法;如果返回 True,則忽略異常,不再對異常進(jìn)行處理
三、with 上下文管理器 as target:
with 上下文管理器 as target:代碼語句體with后面必須跟一個上下文管理器,如果使用了as,則是把上下文管理器的 enter() 方法的返回值賦值給 target,target 可以是單個變量,或者由“()”括起來的元組(不能是僅僅由“,”分隔的變量列表,必須加“()”)
**結(jié)論:**使用了 with 語句,不管在處理文件過程中是否發(fā)生異常,都能保證 with 語句執(zhí)行完畢后已經(jīng)關(guān)閉了打開的文件句柄
總結(jié)
以上是生活随笔為你收集整理的python中with的用法,上下文管理器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: reduce_sum()中的reduct
- 下一篇: tf.control_dependenc