本文目錄一覽:
python中with語句的作用
with語句相當於你定義一個類的時候定義了__enter__()和__exit__()這個兩個方法。
在我們進行文件操作的的時候會用到open方法,後面有了with open以後就不再只使用open方法了,為什麼?因為with open方法簡單,我們不用再去管關閉文件了,即使中間發生異常,with open也會幫我們把文件關閉掉,以下示例演示下with open方法;
class File(object):
“””文件操作類”””
def __init__(self, filepath, mode):
self.filepath = filepath
self.mode = mode
def __enter__(self):
“””打開文件”””
self.file = open(self.filepath, self.mode)
print(“打開文件”)
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
“””關閉文件”””
print(“關閉文件”)
self.file.close()
if __name__ == ‘__main__’:
with File(‘log.log’, ‘r’) as file:
file.write(“家啊”)
可以看出來有了__enter__()和__exit__(),我們自定義的類也可以使用with了
python中with是什麼意思
用來創建一個可以在使用結束後自動關閉的對象,前提是這個class實現了__enter__() 和 __exit__() 方法.
給你個更詳細的講解IBM developerworks
python的with關鍵字
with表達式其實是try-finally的簡寫形式。但是又不是全相同。
其中的context是一個表達式,返回的是一個對象,var用來保存context表達式返回的對象,可以有單個或者多個返回值。
表達式open(‘1.txt’)返回是一個_io.TextIOWrapper 類型的變量用f接受到。在with語句塊中就可以使用這個變量操作文件。執行with這個結構之後。f會自動關閉。相當於自帶了一個finally。
但是with本身並沒有異常捕獲的功能,但是如果發生了運行時異常,它照樣可以關閉文件釋放資源。
這個例子可以看出with沒有捕獲異常的功能。
這個例子可以看出with發生了異常也會關閉程序。
自定義類必須包含上述幾個方法才能正確使用with關鍵字。
下面我們故意加一個NameError
即使程序發生了錯誤,python解釋器終止了我們的程序,但是我們的類 還是順利關閉了。
1、文件操作。2、進程線程之間互斥對象。3、支持上下文其他對象
如何用python 中with 用法
要使用 with 語句,首先要明白上下文管理器這一概念。有了上下文管理器,with 語句才能工作。
下面是一組與上下文管理器和with 語句有關的概念。
上下文管理協議(Context Management Protocol):包含方法 __enter__() 和 __exit__(),支持
該協議的對象要實現這兩個方法。
上下文管理器(Context Manager):支持上下文管理協議的對象,這種對象實現了
__enter__() 和 __exit__() 方法。上下文管理器定義執行 with 語句時要建立的運行時上下文,
負責執行 with 語句塊上下文中的進入與退出操作。通常使用 with 語句調用上下文管理器,
也可以通過直接調用其方法來使用。
運行時上下文(runtime context):由上下文管理器創建,通過上下文管理器的 __enter__() 和
__exit__() 方法實現,__enter__() 方法在語句體執行之前進入運行時上下文,__exit__() 在
語句體執行完後從運行時上下文退出。with 語句支持運行時上下文這一概念。
上下文表達式(Context Expression):with 語句中跟在關鍵字 with 之後的表達式,該表達式
要返回一個上下文管理器對象。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/245309.html