python的with as 的實質

2022-03-01 15:22:31 字數 729 閱讀 9571

with as語句等價於try finally語句

with expression as variable  

with-block

等價於try

: 執行

__enter__的內容

執行 with_block.

finally

: 執行

__exit__內容

try捕獲異常,except處理異常,finally必定執行with expression as variable  

with-block

的執行過程是

首先執行expression裡面的__enter__函式,

它的返回值會賦給as後面的variable,

想讓它返回什麼就返回什麼,只要你知道怎麼處理就可以了,

如果不寫as variable,返回值會被忽略。

然後,開始執行with-block中的語句,

不論成功失敗(比如發生異常、錯誤,設定sys.exit()),

在with-block執行完成後,會執行expression中的__exit__函式。

這個和try finally函式有什麼關係呢?

其實,這樣的過程等價於:

try:

執行 __enter__的內容  

執行 with_block.  

finally:  

執行 __exit__內容  

Python的with as的用法

這個語法是用來代替傳統的try.finally語法的。with expression as variable with block 基本思想是with所求值的物件必須有乙個 enter 方法,乙個 exit 方法。file open tmp foo.txt try data file.read fi...

python 中 with as的用法

with從python 2.5就有,需要from future import with statement。自python 2.6開始,成為預設關鍵字。在what s new in python2.6 3.0中,明確提到 the with statement is a control flow st...

Python中with as的用法

這個語法是用來代替傳統的try.finally語法的。with expression as variable with block 基本思想是with所求值的物件必須有乙個 enter 方法,乙個 exit 方法。緊跟with後面的語句被求值後,返回物件的 enter 方法被呼叫,這個方法的返回值將...