with as語句等價於try finally語句
with expression as variablewith-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 方法被呼叫,這個方法的返回值將...