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 建立 開啟檔...