With介紹:
with是從Python2.5引入的一個(gè)新的語法,它是一種上下文管理協(xié)議,目的在于從流程圖中把try,except和finally關(guān)鍵字和資源分配釋放相關(guān)代碼統(tǒng)統(tǒng)去掉,簡化try….except….finlally的處理流程。with通過__enter__方法初始化,然后在__exit__中做善后以及處理異常。所以使用with處理的對象必須有__enter__()和__exit__()這兩個(gè)方法。其中__enter__()方法在語句體(with語句包裹起來的代碼塊)執(zhí)行之前進(jìn)入運(yùn)行,__exit__()方法在語句體執(zhí)行完畢退出后運(yùn)行。
with語句適用于對資源進(jìn)行訪問的場合,確保不管使用過程中是否發(fā)生異常都會(huì)執(zhí)行必要的“清理”操作,釋放資源,比如文件使用后自動(dòng)關(guān)閉、線程中鎖的自動(dòng)獲取和釋放等。
With語句的基本語法格式如下
withexpression[astarget]:
with_body
參數(shù)說明:
expression:是一個(gè)需要執(zhí)行的表達(dá)式;
target:是一個(gè)變量或者元組,存儲(chǔ)的是expression表達(dá)式執(zhí)行返回的結(jié)果,可選參數(shù)。
#coding=utf-8
withopen("d:\\a.txt",'r')asfp:
printfp.read()
with語句的工作原理:
緊跟with后面的語句會(huì)被求值,返回對象的__enter__()方法被調(diào)用,這個(gè)方法的返回值將被賦值給as關(guān)鍵字后面的變量,當(dāng)with后面的代碼塊全部被執(zhí)行完之后,將調(diào)用前面返回對象的__exit__()方法。
以上內(nèi)容為大家介紹了python培訓(xùn)之with語句為什么會(huì)報(bào)錯(cuò),希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。