python中with语句的使用
引言
with 語句是從 Python 2.5 開始引入的一種與異常處理相關(guān)的功能(2.5 版本中要通過 from __future__ import with_statement 導(dǎo)入后才可以使用),從 2.6 版本開始缺省可用(參考 What's new in Python 2.6? 中 with 語句相關(guān)部分介紹)。with 語句適用于對資源進行訪問的場合,確保不管使用過程中是否發(fā)生異常都會執(zhí)行必要的“清理”操作,釋放資源,比如文件使用后自動關(guān)閉、線程中鎖的自動獲取和釋放等。
術(shù)語
要使用 with 語句,首先要明白上下文管理器這一概念。有了上下文管理器,with 語句才能工作。
下面是一組與上下文管理器和with 語句有關(guān)的概念。
上下文管理協(xié)議(Context Management Protocol):包含方法 __enter__() 和 __exit__(),支持
該協(xié)議的對象要實現(xiàn)這兩個方法。
上下文管理器(Context Manager):支持上下文管理協(xié)議的對象,這種對象實現(xiàn)了
__enter__() 和 __exit__() 方法。上下文管理器定義執(zhí)行 with 語句時要建立的運行時上下文,
負責執(zhí)行 with 語句塊上下文中的進入與退出操作。通常使用 with 語句調(diào)用上下文管理器,
也可以通過直接調(diào)用其方法來使用。
運行時上下文(runtime context):由上下文管理器創(chuàng)建,通過上下文管理器的 __enter__() 和
__exit__() 方法實現(xiàn),__enter__() 方法在語句體執(zhí)行之前進入運行時上下文,__exit__() 在
語句體執(zhí)行完后從運行時上下文退出。with 語句支持運行時上下文這一概念。
上下文表達式(Context Expression):with 語句中跟在關(guān)鍵字 with 之后的表達式,該表達式
要返回一個上下文管理器對象。
語句體(with-body):with 語句包裹起來的代碼塊,在執(zhí)行語句體之前會調(diào)用上下文管
理器的 __enter__() 方法,執(zhí)行完語句體之后會執(zhí)行 __exit__() 方法。
格式
with open(path,操作方式,encoding='utf-8') as file:data = file.read()...# 進行文件的其他操作# 縮進取消,退出with語句塊,表明文件操作結(jié)束,python自動關(guān)閉文件
特點
優(yōu)點
轉(zhuǎn)載于:https://www.cnblogs.com/whu-2017/p/9086717.html
總結(jié)
以上是生活随笔為你收集整理的python中with语句的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ3123: [Sdoi2013]
- 下一篇: [UE4]自动旋转组件