通常在python中使用with語句的地方在檔案的讀寫,它的作用是即使出現bug也可以自動關閉檔案釋放資源。
而with的實質是上下文管理器,想要通過with使用的物件必須包含__enter__()
方法和__exit()__
方法。
class a:
def __enter__(self):
a = 1
return a
def __exit__(self, exc_type, exc_val, exc_tb):
print("現在執行exit方法")
with a() as obj_a:
print(obj_a)
# 1# 現在執行exit方法
其中obj_a是物件中__enter__()方法所返回的值或物件~
【注:】exit()方法中有3個引數, exc_type, exc_val, exc_tb,這些引數在異常處理中相當有用。
exc_type: 錯誤的型別
exc_val: 錯誤型別對應的值
exc_tb: **中錯誤發生的位置
__exit__()方法只有兩個返回值,true or false。如果是true 的話,with語句塊結束之後不會丟擲異常(如果有的話),如果是false,那麼當**出現異常,with語句塊結束之後還會將異常丟擲。如果什麼都不返回則預設為false
class myresource:
def __enter__(self):
print("connect to resource")
# 返回自身以供 as 的物件呼叫
return self
def __exit__(self,exc_type, exc_val, exc_tb):
print("close resource connection")
def query(self):
print("query the data")
with myresource() as resource:
resource.query()
# connect to resource
# query the data
# close resource connection
Python中的 使用
在為函式傳遞引數和函式定義時使用引數的時候,時常會看到有和 和 下面分別講解其作用。呼叫函式時使用 和 假設有函式 def test a,b,c test args 的作用其實就是把序列 args 中的每個元素,當作位置引數傳進去。比如上面這個 如果 args 等於 1,2,3 那麼這個 就等價於 ...
Python中的 使用
python中的 使用 在為函式傳遞引數和函式定義時使用引數的時候,時常會看到有和 和 下面分別講解其作用。呼叫函式時使用 和 假設有函式 def test a,b,c test args 的作用其實就是把序列 args 中的每個元素,當作位置引數傳進去。比如上面這個 如果 args 等於 1,2,...
python中else在迴圈中的使用 一分鐘讀懂
else僅在for或while迴圈中正常退出時執行 import random 匯入隨機模組 a 1,2,3,4 b random.randint 1,6 print b的值為 b for c in a print 遍歷a中的第 c,個 if c b print c b b的值為 b,通過break...