python的with關鍵字

2021-08-13 16:00:37 字數 1866 閱讀 7663

with表示式其實是try-finally的簡寫形式。但是又不是全相同。

"""

格式with context [as var]:

pass

"""

其中的context是乙個表示式,返回的是乙個物件,var用來儲存context表示式返回的物件,可以有單個或者多個返回值。

with open('1.txt') as f:

print(f.read())

print(f.closed)

這個例子可以看出with沒有捕獲異常的功能。

這個例子可以看出with發生了異常也會關閉程式。

with 語句實質是上下文管理。

1、上下文管理協議。包含方法__enter__() 和 __exit__(),支援該協議物件要實現這兩個方法。

2、上下文管理器,定義執行with語句時要建立的執行時上下文,負責執行with語句塊上下文中的進入與退出操作。

3、進入上下文的時候執行__enter__方法,如果設定as var語句,var變數接受__enter__()方法返回值。

4、如果執行時發生了異常,就退出上下文管理器。呼叫管理器__exit__方法。

"""自定義類必須包含上述幾個方法才能正確使用with關鍵字。

class

mycontex

(object):

def__init__

(self,name):

self.name=name

def__enter__

(self):

print("進入enter")

return self

defdo_self

(self):

print(self.name)

def__exit__

(self,exc_type,exc_value,traceback):

print("退出exit")

下面我們故意加乙個nameerror

即使程式發生了錯誤,python直譯器終止了我們的程式,但是我們的類 還是順利關閉了。

1、檔案操作。2、程序執行緒之間互斥物件。3、支援上下文其他物件

python的with關鍵字

with語句適用於對資源進行訪問的場合,確保不管使用過程中是否發生異常都會執行必要的 清理 操作,釋放資源,比如檔案使用後自動關閉 執行緒中鎖的自動獲取和釋放等。with表示式其實是try finally的簡寫形式。但是又不是全相同。with 語句實質是上下文管理。1 上下文管理協議。包含方法 en...

python的關鍵字

1.什麼是關鍵字 python一些具有特殊功能的識別符號,這就是所謂的關鍵字 關鍵字,是python已經使用的了,所以不允許開發者自己定義和關鍵字相同的名字的識別符號 檢視關鍵字 and as assert break class continue def del elif else except ...

python的系統關鍵字 開發系統關鍵字

1 舉個例子,想要開發乙個加減乘除的系統關鍵字,我們首先寫乙個calc.py檔案 1 coding utf 8 3 classcalc object 4 defadd self,a,b 5 c int a int b 6 returnc7 8 defsub self,a,b 9 c int a in...