Python中with as的用法

2021-07-02 01:00:19 字數 1216 閱讀 5042

這個語法是用來代替傳統的try...finally語法的。 

with expression [ as variable] with-block 

基本思想是with所求值的物件必須有乙個__enter__()方法,乙個__exit__()方法。

緊跟with後面的語句被求值後,返回物件的__enter__()方法被呼叫,這個方法的返回值將被賦值給as後面的變數。當with後面的**塊全部被執行完之後,將呼叫前面返回物件的__exit__()方法。

file = open("/tmp/foo.txt")

try:

data = file.read()

finally:

file.close()

使用with...as...的方式替換,修改後的**是:

with open("/tmp/foo.txt") as file:

data = file.read()

#!/usr/bin/env python

# with_example01.py

class

sample:

def__enter__

(self):

print

"in __enter__()"

return

"foo"

def__exit__

(self, type, value, trace):

print

"in __exit__()"

defget_sample

():return sample()

with get_sample() as sample:

print

"sample:", sample

執行結果為
in __enter__()

sample: foo

in __exit__()

1. __enter__()方法被執行

2. __enter__()方法返回的值 - 這個例子中是"foo",賦值給變數'sample'

3. 執行**塊,列印變數"sample"的值為 "foo"

4. __exit__()方法被呼叫with真正強大之處是它可以處理異常。可能你已經注意到sample類的__exit__方法有三個引數- val, type 和 trace。這些引數在異常處理中相當有用。

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 語法

使用語言的好特性,而不是那些糟糕的特性 不知道誰說的 好久不學習python的語法了,上次去面試,和面試官聊到了python中的with as statement 也稱context manager 挺感興趣的,這兩天學習了一番,收穫頗豐在此分享。先說明乙個常見問題,檔案開啟 1 2 34 5 6 ...

Python中的with as 語法

1 使用with.as.的原因 python操作檔案時,需要開啟檔案,最後手動關閉檔案。通過使用with.as.不用手動關閉檔案。當執行完內容後,自動關閉檔案。2 先說明乙個常見問題,檔案開啟 try f open do something except do something finally f...