更新時(shí)間:2022年10月25日09時(shí)41分 來(lái)源:傳智教育 瀏覽次數(shù):
我們之前在介紹finally語(yǔ)句時(shí),說(shuō)過(guò)finally語(yǔ)句用于釋放資源,如關(guān)閉文件等。除了在finally語(yǔ)句中手動(dòng)釋放資源以外,還可以使用with語(yǔ)句預(yù)定義清理操作,即無(wú)論資源在使用過(guò)程中是否發(fā)生異常,都會(huì)執(zhí)行釋放資源的操作,比如文件使用后自動(dòng)關(guān)閉。
Python2.5開(kāi)始(如果要在Python2.5中使用with語(yǔ)句,需通過(guò)from _future_ importwith_statement導(dǎo)入)引入了with語(yǔ)句,從2.6版本正式啟用。with語(yǔ)句適用于對(duì)資源進(jìn)行訪問(wèn)的場(chǎng)合,確保不管使用過(guò)程中是否發(fā)生異常都會(huì)執(zhí)行必要的“清理”操作,釋放資源。
with語(yǔ)句的基本語(yǔ)法如下:
with 上下文表達(dá)式 [as 資源對(duì)象]: 對(duì)象的操作
上述語(yǔ)法格式表示的含義如下。
·上下文表達(dá)式:返回一個(gè)上下文管理器對(duì)象。若指定了as子句,該對(duì)象并不賦值給資源對(duì)象,而是將上下文管理器的___enter___()方法的返回值賦值給資源對(duì)象。
·資源對(duì)象:可以是單個(gè)變量,也可以是元組。
·對(duì)象的操作:with語(yǔ)句包裹的代碼塊。在執(zhí)行該代碼塊之前,會(huì)調(diào)用上下文管理器的___enter___()方法;在執(zhí)行代碼塊之后,會(huì)執(zhí)行___exit___()方法。
使用with語(yǔ)句操作文件對(duì)象的示例如下:
with open("/tmp/foo.txt") as file: data = file.read()
上述示例使用with語(yǔ)句打開(kāi)文件。如果能順利打開(kāi)文件,則將文件對(duì)象賦值給file,然后調(diào)用read方法讀取了file對(duì)象的數(shù)據(jù)。當(dāng)對(duì)文件的操作結(jié)束以后,with語(yǔ)句會(huì)關(guān)閉文件。即使這段代碼在運(yùn)行的過(guò)程中產(chǎn)生了異常,with語(yǔ)句也會(huì)關(guān)閉文件。
簡(jiǎn)述Python中pass語(yǔ)句的作用
2022-10-14python轉(zhuǎn)義字符的作用和用法
2022-10-13TiDB中有哪些組件?【TiDB架構(gòu)圖解】
2022-10-11傳智教育 x SelectDB公司 聯(lián)合推出Apache Doris中文視頻教程
2022-10-11傳智教育攜手天津經(jīng)開(kāi)區(qū)人社局推動(dòng)職業(yè)技能競(jìng)賽廣泛開(kāi)展
2022-10-11再升級(jí)!業(yè)務(wù)+技術(shù)并重,Python+大數(shù)據(jù)開(kāi)發(fā)課程V3.0
2022-10-11北京校區(qū)