1. 程式人生 > >Python中的with關鍵字

Python中的with關鍵字

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__()函式。
這好像和前面說的裝飾器有點類似的地方,在不修改原始碼的情況下對其新增功能(個人見解)

感謝您的閱讀,謝謝!