python 常見語法拾遺 with 用法

2021-08-22 19:46:39 字數 1245 閱讀 7945

有一些任務,可能事先需要設定,事後做清理工作。對於這種場景,python的with語句提供了一種非常方便的處理方式。

#!/usr/bin/env pythonclass test(obj):def __enter__(self):print "in __enter__()"return "test_with"

def __exit__(self, type, value, trace):print "in __exit__()"

def get_example():return test()

with get_example() as example:print "example:", example

大家可以做下實驗看下輸出.

__exit__ 方法有三個引數 val, type 和 trace。 這些引數在異常處理中相當有用。

實際上,在with後面的**塊丟擲任何異常時,__exit__() 方法被執行。正如例子所示,異常丟擲時,與之關聯的type,value和stack trace傳給 __exit__() 方法,因此丟擲的xx異常被列印出來了。開發庫時,清理資源,關閉檔案等等操作,都可以放在 __exit__ 方法當中。

另外,__exit__ 除了用於tear things down,還可以進行異常的監控和處理,注意後幾個引數。要跳過乙個異常,只需要返回該函式true即可。

下面的樣例**跳過了所有的typeerror,而讓其他異常正常丟擲。

def __exit__(self, type, value, traceback):return isinstance(value, typeerror)

__exit__ 函式可以進行部分異常的處理,如果我們不在這個函式中處理異常,他會正常丟擲,這時候我們可以這樣寫

try:with open( "a.txt" ) as f :do somethingexcept ***error:do something about exception

python 基本語法 拾遺

django 開發中一般見到的python 內部類,最多是在model 設計過程中。所謂內部類,就是在類內部定義的類,主要目的是為了更好的抽象現實世界。內部類的距離 汽車是個類,汽車的地盤,輪胎也可以抽象為類,將其定義到汽車類中,則形成了內部類,更好的描述汽車類,因為底盤,輪胎是汽車的一部分 一般不...

Linux常見命令拾遺

0.1 使用 表示該部分需要根據你的實際情況替換1.軟體安裝解除安裝類 徹底移除軟體 apt get purge remove soft name2.檔案操作 重新命名檔案 mv filename1 filename23.許可權操作 任何人都有讀 寫 執行三項許可權 chown 777 filena...

C語言基本語法拾遺

常量與指標 指標陣列 定義的變數是乙個陣列,陣列的每個元素都是乙個指定型別的指標。基本定義格式為 type var name n 例如 定義乙個包含100個元素的整型指標陣列p int p 100 下面這種定義方式與上面等價,因為運算子優先順序高於 運算子 int p 100 int main in...