python基礎 自定義with的語句 20

2021-10-04 02:29:53 字數 1495 閱讀 1326

with的作用

使用with後不管with中的**出現什麼錯誤,都會進行對當前物件進行清理工作。 例如file的file.close()方法,無論with**現任何錯誤,都會執行file.close()方法。

with

open()

as f:

其次with只有特定場合下才能使用。這個特定場合只的是那些支援了上下文管理器的物件。

什麼是上下文管理器

這個管理器就是在物件內實現了兩個方法其中為__enter__() 和__exit__()

方法__enter__()方法會在with的**塊執行之前執行,exit()會在**塊執行結束後執行。

方法__exit__()內會自帶當前物件的清理方法。

重點:with方法適用於需要分配和清理資源的情況,比如資料庫連線。with方法的實現必須定義enter()和__exit__()函式。

類和異常的結合

#自己定義乙個with方法

class

testwith()

:def

__enter__

(self)

:print

("run"

)def

__exit__

(self,exc_type,exc_val,exc_tb)

:print

("exit"

)#類的初始化和類的退出

with testwith():

print

("test is runing"

)

輸出的結果:

run

test is runing

exit

以上的**中,是沒有異常報錯的情況,而下面的是有異常報錯的情況下,如何輸出:

class

testwith()

:def

__enter__

(self)

:print

("run"

)def

__exit__

(self,exc_type,exc_val,exc_tb)

:if exc_tb is

none

:print

('正常結束'

)else

:print

('has error %s'

%exc_tb)

#類的初始化和類的退出

with testwith():

print

("test is runing"

)raise nameerror(

'testnameerror'

)

輸出的結果:

run

丟擲異常的資訊

test is runing

這就是類和with的結合

Python基礎 自定義異常

當執行try內部 的時候,易彈發生錯誤,會根據錯誤型別自動建立乙個錯誤資訊,並反饋 raise用於引發異常,且異常必須是error和exception的子類 as是對於phoneerr的別名 class phoneerr baseexception 自定義的異常必須是baseexception的子類...

Python基礎9 自定義函式

函式是組織好的可重複使用的,用來實現單一或相關聯功能的 段 函式能提高應用的模組性和 的重複利用率 python提供了許多內建函式,比如print 也可以自己建立函式,即自定義函式自定義函式的建立和呼叫 不帶引數的自定義函式 def sayhi print hi 呼叫函式 sayhi hi 帶引數的...

Python自定義函式基礎概念

一 函式定義語法 def 函式名 形參列表 語句塊函式定義語句 def 語句 的完整語法 裝飾器1 裝飾器2 def 函式名 位置形參 元組形參 命名關鍵字形參 字典形參 文件字串 語句塊 注 中括號代表其內部可以省略 二 函式文件字串 函式內第一次未被賦值給任何變數的字串是此函式的文件字串。說明 ...