python中with的用法_python 中 with的用法
with 語句使用于對資源進行訪問的場合,確保不管使用過程是否發生異常都會執行必要的"清理"操作,釋放資源,比如文件使用后自動關閉/線程中鎖的自動獲取和釋放
with open("1.txt") as file:
data = file.read()
使用with,能夠減少冗長,還能自動處理上下文環境產生的異常
with 工作原理
(1)緊跟with后面的語句被求值后,返回對象的__enter__()方法被調用,這個方法的返回值將被賦值給as后面的變量;
(2)當with后面的代碼塊全部被執行完之后,將調用前面返回對象的__exit__()方法。
with工作原理代碼示例:
class Sample:
def __enter__(self):
print("進入 with")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("退出 with")
def xxx(self):
print('讀取文件')
with Sample() as sample:
print("__enter__的返回值: ", sample)
sample.xxx()
結果
進入 with
__enter__的返回值: <__main__.sample object at>
讀取文件
退出 with
可以看到,整個運行過程如下:
(1)__enter__()方法被執行;
(2)__enter__()方法的返回值,在這個例子中是self,賦值給變量sample;
(3)執行代碼塊,__enter__的返回值: <__main__.sample object at>;
( 4 )執行方法 xxx()
( 5 )__exit__()方法被調用;
【注:】exit()方法中有3個參數, exc_type, exc_val, exc_tb,這些參數在異常處理中相當有用。
exc_type: 錯誤的類型
exc_val: 錯誤類型對應的值
exc_tb: 代碼中錯誤發生的位置
總結
實際上,在with后面的代碼塊拋出異常時,exit()方法被執行。開發庫時,清理資源,關閉文件等操作,都可以放在exit()方法中。
總之,with-as表達式極大的簡化了每次寫finally的工作,這對代碼的優雅性是有極大幫助的。
如果有多項,可以這樣寫:
With open('1.txt') as f1, open('2.txt') as f2:
do something
總結
以上是生活随笔為你收集整理的python中with的用法_python 中 with的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: alot英文怎么读_很多的英文怎么说
- 下一篇: python使用shell命令_pyth