Python中的with關鍵字
阿新 • • 發佈:2018-11-19
with關鍵字是幹嘛用的?
with語句用於對try except finally 等的優化,讓程式碼更加美觀,
例如常用的讀取檔案的操作,用try except finally 實現:
try:
fo=open( 'context.txt','r',encoding='utf8' )
fo.read()
except:
pass
finally:
fo.close()
是不是顯得有點拖泥帶水了?不整潔不美觀。
咱們用with關鍵字達到與其相同的功能:
with open( 'context.txt','r',encoding='utf8' ) as fo: fo.read()
這條語句就好簡潔很多,當with裡面的語句產生異常的話,也會正常關閉檔案,可能因為Python內部的規則吧–
with關鍵字的使用:
with關鍵字,它實現了兩個特殊的方法:enter() exit()
只要是with關鍵字修飾的函式必定都會有這兩個方法
with 關鍵字的使用:
class Myhello: def __init__(self): print( "初始化" ) def __enter__(self): print( "enter" ) def __exit__(self,exceptionType,exceptionVal,trace): print("exit") with Myhello(): print("你好")
不難看出:在執行Myhello()時,先對其初始化,然後再執行了它的 enter()函式,然後執行了with關鍵字裡面的程式碼,執行完了之後會再執行__exit__()函式。
這好像和前面說的裝飾器有點類似的地方,在不修改原始碼的情況下對其新增功能(個人見解)
感謝您的閱讀,謝謝!