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 函式名 位置形參 元組形參 命名關鍵字形參 字典形參 文件字串 語句塊 注 中括號代表其內部可以省略 二 函式文件字串 函式內第一次未被賦值給任何變數的字串是此函式的文件字串。說明 ...