python with上下文管理

2021-10-10 07:27:18 字數 1891 閱讀 7579

class

person

:def

__init__

(self,name)

: self .name = name

def__enter__

(self)

:print

('這是with定義的物件進到了enter方法中執行操作'

)return self

def__exit__

(self,exc_type,exc_value,exc_tb)

:print

('''with物件在enter中執行完畢之後會返回物件,

這是物件就會走到with方法中去執行當中的**,在沒有報錯的情況下,執行完畢之後,

程式就會進入到exit方法中,然後完成關閉.這就是with方法不用手動關閉的原理.

''')with person(

'小紅'

)as p:

print

(p.name)

class

person

:def

__init__

(self,name)

: self .name = name

def__enter__

(self)

:print

('這是with定義的物件進到了enter方法中執行操作'

)return self

def__exit__

(self,exc_type,exc_value,exc_tb)

:print

('''with物件在enter中執行完畢之後會返回物件,

這是物件就會走到with方法中去執行當中的**,在沒有報錯的情況下,執行完畢之後,

程式就會進入到exit方法中,然後完成關閉.這就是with方法不用手動關閉的原理.

''')with person(

'小紅'

)as p:

print

(p.name)

result =1/

0print

('程式發生異常'

)

當程式在with**塊中執行遇到異常,那麼異常下面的**就不會被執行,程式就會立即跳轉到exit方法中去執行.

class

person

:def

__init__

(self,name)

: self .name = name

def__enter__

(self)

:print

('這是with定義的物件進到了enter方法中執行操作'

)return self

def__exit__

(self,exc_type,exc_value,exc_tb)

:print

('''with物件在enter中執行完畢之後會返回物件,

這是物件就會走到with方法中去執行當中的**,在沒有報錯的情況下,執行完畢之後,

程式就會進入到exit方法中,然後完成關閉.這就是with方法不用手動關閉的原理.

''')return

true

with person(

'小紅'

)as p:

print

(p.name)

result =1/

0print

('程式發生異常'

)print

('當exit方法返回值為true時,with裡面的**塊異常下面的不再執行,但是在with語句外的下面的**還是正常執行'

)

當exit方法執行返回的結果為true時,異常就會被隱藏掉了,所以後面的**還是會被執行

python with上下文管理器

python 的with語句支援通過上下文管理器所定義的執行時上下文這一概念。此物件的實現使用了一對專門方法,允許使用者自定義類來定義執行時上下文,在語句體被執行前進入該上下文,並在語句執行完畢時退出該上下文。例如,檔案物件的快速開啟和關閉 with open file path,r encodin...

Python with語句和上下文管理器物件

今天看書,書上面提到要盡量使用with自動關閉資源,裡面還提到了上下文管理器物件的概念,然後查詢資料,對with的解釋如下 with的有一些任務,可能事先需要設定,事後做清理工作。對於這種場景,python的with語句提供了一種非常方便的處理方式。乙個很好的例子是檔案處理,需要獲取乙個檔案控制代碼...

Python with及上下文管理器的原理和應用

with 語句是 pyhton 提供的一種簡化語法,適用於對資源進行訪問的場合,確保不管使用過程中是否發生異常都會執行必要的 清理 操作,釋放資源,with 語句主要是為了簡化 操作。with 檔案使用後自動關閉 建立乙個檔案test.txt,若存在則開啟,寫入hello python 建立 開啟檔...