Python 中 with 的使用分析

2021-10-05 12:26:09 字數 1245 閱讀 4189

通常在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...