首頁技術(shù)文章正文

Python培訓(xùn):預(yù)定義清理

更新時(shí)間:2022-09-08 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  之前在介紹finally語句時(shí),說過finally語句用于釋放資源,如關(guān)閉文件等。除了在finally語句中手動(dòng)釋放資源以外,還可以使用with語句預(yù)定義清理操作,即無論資源在使用過程中是否發(fā)生異常,都會(huì)執(zhí)行釋放資源的操作,比如文件使用后自動(dòng)關(guān)閉。

  Python2.5開始(如果要在Python2.5中使用with語句,需通過from_future_importwith_statement導(dǎo)入)引入了with語句,從2.6版本正式啟用。with語句適用于對(duì)資源進(jìn)行訪問的場(chǎng)合,確保不管使用過程中是否發(fā)生異常都會(huì)執(zhí)行必要的“清理”操作,釋放資源。

  with語句的基本語法如下:

with 上下文表達(dá)式 [as 資源對(duì)象]:
   對(duì)象的操作

  上述語法格式表示的含義如下。

  ·上下文表達(dá)式:返回一個(gè)上下文管理器對(duì)象。若指定了as子句,該對(duì)象并不賦值給資源對(duì)象,而是將上下文管理器的__enter__()方法的返回值賦值給資源對(duì)象。

  ·資源對(duì)象:可以是單個(gè)變量,也可以是元組。

  ·對(duì)象的操作:with語句包裹的代碼塊。在執(zhí)行該代碼塊之前,會(huì)調(diào)用上下文管理器的__enter__()方法;在執(zhí)行代碼塊之后,會(huì)執(zhí)行__exit__()方法。

  使用with語句操作文件對(duì)象的示例如下:

with open(''/tmp/foo.txt'') as file:
    data = file.read()

  上述示例使用with語句打開文件。如果能順利打開文件,則將文件對(duì)象賦值給file,然后調(diào)用read方法讀取了file對(duì)象的數(shù)據(jù)。當(dāng)對(duì)文件的操作結(jié)束以后,with語句會(huì)關(guān)閉文件。即使這段代碼在運(yùn)行的過程中產(chǎn)生了異常,with語句也會(huì)關(guān)閉文件。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!