日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python中with的用法,上下文管理器

發(fā)布時間:2025/3/21 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。