Python 上下文管理器

2021-10-07 18:31:38 字數 944 閱讀 9515

首先介紹

上下文管理器協議:包含__enter__()和__exit__()方法

支援該協議的物件,稱為上下文管理器

上下文管理器的本質:支援with操作

語句體:with 語句包裹起來的**塊

在執行語句體之前會呼叫__enter__(),執行完語句體會呼叫__exit__()

實現乙個上下文管理器的方式有兩種

**示例:實現乙個計算**執行時間計算的上下文管理物件

基於類實現

import time

class timer:

def __enter__(self):

self.start_time = time.time()

def __exit__(self, exc_type, exc_val, exc_tb):

self.end_time = time.time()

time_diff = self.end_time - self.start_time

print(time_diff)

with timer():

# 語句體

num_list = [i for i in range(100000)]

基於裝飾器實現

import contextlib

import time

@contextlib.contextmanager

def timer():

start_time = time.time()

yield

end_time = time.time()

print(end_time - start_time)

with timer():

# 語句體

num_list = [i for i in range(100000)]

python 上下文管理器

上下文管理器允許你在有需要的時候,精確地分配和釋放資源。使用上下文管理器最廣泛的案例就是with語句了。想象下你有兩個需要結對執行的相關操作,然後還要在它們中間放置一段 上下文管理器就是專門讓你做這種事情的。舉個例子 with open some file w as opened file open...

python上下文管理器

上下文管理器是乙個包裝任意 塊的物件。上下文管理器保證進入上下文管理器時,每次 執行的一致性 當退出上下文管理器時,相關資源會被正確 這裡被正確 指的是在 exit 方法自定義 比如關閉資料庫游標 值得注意的是,上下文管理器一定能夠保證退出步驟的執行。如果進入上下文管理器,根據定義,一定會有退出步驟...

Python 上下文管理器

python中的上下文管理器是乙個包裝任意 塊的物件。它在處理資源的開啟關閉 異常的處理等方面有很好的實現方法。1.上下文管理器的語法 假設我們需要讀取乙個檔案中的資料,如下 try test file open test.txt r contents test file.read finally ...