日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 手机福利在线 | 日本一卡二卡在线 | 伊人亚洲 | 国产一区二区欧美 | 国产成人77亚洲精品www | 自拍视频网址 | 午夜精品久久久久久久久久蜜桃 | 少妇高潮伦 | 18精品爽国产白嫩精品 | 日本人妻伦在线中文字幕 | 欧美亚洲视频在线观看 | 日韩在线国产精品 | 精品国产av鲁一鲁一区 | 亚洲色图吧 | 亚洲色图二区 | 国产伦精品一区 | 日韩一级中文字幕 | 成人免费视频大全 | 中文字幕33页 | 韩国91视频 | 黄色大片免费在线观看 | 国产999精品 | 草女人视频 | 台湾一级视频 | 亚州av| 成人激情自拍 | 亚洲视频福利 | av片一区二区三区 | av网在线播放 | 国产精品15p| 亚洲精品小视频 | 精品无码久久久久久国产 | 久久久久综合 | 91这里只有精品 | 日韩精品在线免费看 | 成人性生交视频免费观看 | 爱爱小视频免费看 | 成a人v | 樱花电影最新免费观看国语版 | 一二三四区在线 | 裸体裸乳免费看 | 男人天堂资源 | 5a毛片| 三上悠亚在线一区二区 | 91黄色影视 | www.69视频 | 最新日本中文字幕 | 红桃一区二区三区 | 黄色av免费播放 | 亚洲交性网 | 99热一区二区三区 | 国产一二区在线观看 | 国产精品一区二区三区免费观看 | 亚洲精品污 | 久久午夜av | 中文字幕理伦片免费看 | 国产一区二区视频在线免费观看 | 人人草人人干 | 99热这里只 | 中国精品毛片 | 日韩影院在线 | 欧美啊v | 丁香av | 亚洲第一黄色网址 | 免费高清视频在线观看 | 中文有码在线播放 | 香蕉视频一区 | 欧美日韩美女 | 亚洲av无码不卡一区二区三区 | 婷婷色小说 | 欧美女同视频 | 国产午夜激情 | 国产又粗又黄又爽视频 | 丰满人妻熟妇乱偷人无码 | 一级视频毛片 | 亚洲欧美日韩色 | 国产精品91一区 | 中文字幕第27页 | 99热这里有精品 | 国产性猛交普通话对白 | 久久亚洲影视 | 国产99久久九九精品无码 | 国产资源在线观看 | 日本九九视频 | 精品动漫一区 | 色婷五月| 成年人看的网站 | 黄色片在线免费看 | 亚洲一区二区不卡视频 | 亚洲五月激情 | 亚洲黄色免费视频 | 日韩大片免费 | 亚洲精品久久一区二区三区777 | 黄色av电影网站 | 久久中文娱乐网 | 精品久久久久久久久久 | 国产人妻精品一区二区三区不卡 | 欧美国产91| 亚洲激情五月婷婷 |