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

歡迎訪問 生活随笔!

生活随笔

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

python

python中with的用法

發(fā)布時(shí)間:2025/3/15 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中with的用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

with是從Python2.5引入的一個(gè)新的語法,它是一種上下文管理協(xié)議,目的在于從流程圖中把 try,except 和finally 關(guān)鍵字和

資源分配釋放相關(guān)代碼統(tǒng)統(tǒng)去掉,簡化try….except….finlally的處理流程。

with通過__enter__方法初始化,然后在__exit__中做善后以及處理異常。

所以使用with處理的對(duì)象必須有__enter__()和__exit__()這兩個(gè)方法。

其中__enter__()方法在語句體(with語句包裹起來的代碼塊)執(zhí)行之前進(jìn)入運(yùn)行,exit()方法在語句體執(zhí)行完畢退出后運(yùn)行。

with 語句適用于對(duì)資源進(jìn)行訪問的場(chǎng)合,確保不管使用過程中是否發(fā)生異常都會(huì)執(zhí)行必要的“清理”操作,釋放資源,比如文件使用后自動(dòng)關(guān)閉、線程中鎖的自動(dòng)獲取和釋放等。

With語句的基本語法格式:

with expression [as target]:

with_body

參數(shù)說明:

expression:是一個(gè)需要執(zhí)行的表達(dá)式;

target:是一個(gè)變量或者元組,存儲(chǔ)的是expression表達(dá)式執(zhí)行返回的結(jié)果,可選參數(shù)。

例如:

with open(‘d:\xxx.txt’) as fp:
… print fp.read()

我無法大是大非
我無法大是大非
我無法大是大非

with語句的工作原理:

緊跟with后面的語句會(huì)被求值,返回對(duì)象的__enter__()方法被調(diào)用,這個(gè)方法的返回值將被賦值給as關(guān)鍵字后面的變量,當(dāng)with后面的代碼塊全部被執(zhí)行完之后,將調(diào)用前面返回對(duì)象的__exit__()方法。

with語句最關(guān)鍵的地方在于被求值對(duì)象必須有__enter__()和__exit__()這兩個(gè)方法,那我們就可以通過自己實(shí)現(xiàn)這兩方法來自定義with語句處理異常。

示例代碼:

#encoding=utf-8

class opened(object):
def init(self,filename):
self.handle=open(filename)
print “Resource:%s”%filename
def enter(self):
print “[enter%s]: Allocate resource.”%self.handle
return self.handle#可以返回不同的對(duì)象
def exit(self,exc_type,exc_value,exc_trackback):
print “[Exit %s]: Free resource.” %self.handle
if exc_trackback is None:
print “[Exit %s]:Exited without exception.”%self.handle
self.handle.close()
else:
print “[Exit %s]: Exited with exception raised.”%self.handle
return False # 可以省略,缺省的None也是被看做是False

with opened(r’d:\xxx.txt’) as fp:
for line in fp.readlines():
print line

結(jié)果:

opened中的__enter__() 返回的是自身的引用,這個(gè)引用可以賦值給 as 子句中的fp變量;

返回值的類型可以根據(jù)實(shí)際需要設(shè)置為不同的類型,不必是上下文管理器對(duì)象本身。

exit() 方法中對(duì)變量exc_trackback進(jìn)行檢測(cè),如果不為 None,表示發(fā)生了異常,返回 False 表示需要由外部代碼邏輯對(duì)異常進(jìn)行處理;

如果沒有發(fā)生異常,缺省的返回值為 None,在布爾環(huán)境中也是被看做 False,但是由于沒有異常發(fā)生,exit() 的三個(gè)參數(shù)都為 None,上下文管理代碼可以檢測(cè)這種情況,做正常處理。exit()方法的3個(gè)參數(shù),分別代表異常的類型、值、以及堆棧信息。

總結(jié)

以上是生活随笔為你收集整理的python中with的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 韩国不卡av | 欧美伊人网 | 久久精品免费在线 | 毛片毛片毛片毛片毛片毛片毛片 | 国产av无码专区亚洲a∨毛片 | 日韩一区在线观看视频 | 9i在线看片成人免费 | 人日人视频 | 国产又黄又猛的视频 | 日产av在线 | 日本激情视频在线观看 | 久久久久97 | 日本在线看 | 懂色av懂色av粉嫩av分享吧 | 久久久久综合 | 精品国产乱码久久久人妻 | 人人爽人人干 | 免费观看国产精品 | 欧美日韩在线一区 | 天天操操操| 国产又黄又爽又色 | 老头巨大又粗又长xxxxx | 久久国产精品精品国产 | 国产www精品 | 国产91麻豆视频 | 伊是香蕉大人久久 | 欧美一区网站 | 亚洲特级黄色片 | 色一情一伦一子一伦一区 | 精品在线视频观看 | 黄色网址在线免费观看 | 高跟鞋肉丝交足91 | 久久久久久欧美精品se一二三四 | 欧美午夜精品 | 91免费版在线 | 蜜桃av影视 | chien国产乱露脸对白 | 黄色免费在线观看网站 | 亚洲欧美成人一区 | 欧美成人片在线 | 一级aa毛片 | 国产99久久九九精品无码 | 黄色在线观看视频网站 | 亚洲国产精彩视频 | www成人在线观看 | 少妇被按摩师摸高潮了 | 日本在线一级 | 久久久高清免费视频 | 色精品视频| 岳睡了我中文字幕日本 | 国产精品久久九九 | 三上悠亚在线一区 | 91一区二区三区四区 | 婷婷激情影院 | 国产理论一区 | 三上悠亚一区二区三区 | 二十四小时在线更新观看 | 国产婷婷色一区二区在线观看 | 韩国伦理片免费看 | 成人一二区 | 开心六月婷婷 | 中国在线观看视频高清免费 | 国产精品亚洲一区 | 91精品国产综合久久精品 | 五月天色婷婷综合 | 超碰av男人的天堂 | 欧美特黄aaa| 成人激情电影在线观看 | 99久久久国产精品免费蜜臀 | 玉势 (1v1 高h) | 久久久久亚洲精品国产 | 国产91精选 | 欧美午夜精品久久久久久浪潮 | 国产精品久久久久电影 | 国产人成 | 日韩成人免费在线观看 | 黑料视频在线观看 | 精品国产乱码久久久久久闺蜜 | 性农村xxxxx小树林 | 大片av| 欧美性插动态图 | 成年人的黄色片 | 亚洲成人偷拍 | 国产无遮挡呻吟娇喘视频 | 色欧美亚洲 | 亚洲伦理影院 | 日本五十熟hd丰满 | 外国电影免费观看高清完整版 | 波多野结衣50连登视频 | 日本一区二区三区久久 | 97视频免费在线观看 | 中国少妇av | 日韩av手机在线播放 | av女优一区| 国产免费播放 | 精品一区二区三区在线视频 | 超碰久操 | 一区二区成人免费视频 | 男人用嘴添女人下身免费视频 |