# with 語句後面的結果物件,需要重寫 __enter__ 和 __exit__方法
# 當進入到 with **塊時,會自動呼叫 __enter__ 方法裡的**
# 當 with **塊執行完成以後,會自動呼叫 __exit__ 方法
class
demo
(object):
def__enter__
(self)
:print
('__enter__方法被執行了'
)return self
def__exit__
(self, exc_type, exc_val, exc_tb)
:print
('__exit__方法被呼叫了'
)def
creat_obj()
: x = demo(
)return x
# y = creat_obj() y = demo()
# d = y.__enter__() d = y.__enter__()
# print(y is d)
with creat_obj(
)as d:
# as 變數名
# 變數 d 不是 creat_obj() 的返回結果
# 它是建立的物件 y 呼叫 __enter__ 之後的返回結果
print
(d)
結果
__enter__方法被執行了
<__main__.demo object at 0x018ddcf0
>
__exit__方法被呼叫了
process finished with exit code 0
try
:file
=open
('***.txt'
,'r'
)except filenotfounderror:
print
('檔案不存在'
)else
:try
:file
.read(
)finally
:file
.close(
)try
:with
open
('***.txt'
,'r')as
file
:file
.read(
)# 不需要手動的關閉檔案
# file.close() # with關鍵字會幫我們關閉檔案
except filenotfounderror:
print
('檔案未找到'
)# with我們稱之為上下文管理器
python學習筆記 上下文管理器
上下文管理器可以在不需要檔案的時候,自動關閉檔案。下面我們看一下兩段程式 如下 without context manager f open new.txt w print f.closed whether the file is open f.write hello world f.close p...
26 python筆記 上下文管理器
個人部落格 注 enter方法可以寫連線資料庫的操作,exit方法寫斷開連線的操作,用with去管理 注 with開啟的檔案物件,就是1個上下文管理器 注 with語句可以去管理 上下文管理器物件 注 使用with管理,上下文管理器 不需要自己呼叫 enter exit 方法 示例 上下文管理器 上...
python 上下文管理器
上下文管理器允許你在有需要的時候,精確地分配和釋放資源。使用上下文管理器最廣泛的案例就是with語句了。想象下你有兩個需要結對執行的相關操作,然後還要在它們中間放置一段 上下文管理器就是專門讓你做這種事情的。舉個例子 with open some file w as opened file open...