色135综合网_中国无码人妻丰满熟妇啪啪软件_东京人气热影院_欧美欧洲成本大片免费_XXXX交换夫妇COm中国回

當前位置:首頁 > 關注 > 正文

世界最資訊丨再看看python的裝飾器模式

來源:嗶哩嗶哩    時間:2023-04-05 19:59:11

在Python中,裝飾器模式是一種常見的設計模式,用來改變或增強一個函數(shù)的行為。在本文中,我們將使用一個實例來解釋Python中的裝飾器模式的工作方式。


(相關資料圖)

假設我們有一個需要測量執(zhí)行時間的函數(shù),代碼如下:

import time

def calculate_sum(num_list):

start_time = time.time()

total = sum(num_list)

end_time = time.time()

print("計算結果:{}\n執(zhí)行時間:{}秒".format(total, end_time-start_time))

calculate_sum()函數(shù)接受一個數(shù)字列表,并計算它們的總和。我們想要測量函數(shù)執(zhí)行的時間,以便在對程序進行優(yōu)化時能夠了解哪些函數(shù)占用最多的時間。

現(xiàn)在我們可以手動添加代碼來測量函數(shù)的執(zhí)行時間,如下所示:

start_time = time.time()

calculate_sum([1,2,3,4,5])

end_time = time.time()

print("函數(shù)總執(zhí)行時間:{}秒".format(end_time - start_time))

這樣,我們可以將代碼塊的執(zhí)行時間與函數(shù)的執(zhí)行時間分開,從而獲取函數(shù)的執(zhí)行時間。

但是,如果我們需要對多個函數(shù)進行測量,這種手動測量的方法將變得非常麻煩。這時就可以使用裝飾器模式來自動測量函數(shù)的執(zhí)行時間。

以下是一個基本的裝飾器示例:

import time

def time_it(func):

def wrapper(*args, **kwargs):

start_time = time.time()

result = func(*args, **kwargs)

end_time = time.time()

print("函數(shù) {} 的執(zhí)行時間: {}秒".format(func.__name__, end_time - start_time))

return result

return wrapper

這個裝飾器將測量函數(shù)的執(zhí)行時間,并將結果記錄到控制臺。它可以用來修飾任何函數(shù)。

現(xiàn)在,我們可以使用裝飾器time_it()來修飾calculate_sum()函數(shù),如下所示:

def calculate_sum(num_list):

total = sum(num_list)

return total

裝飾器將函數(shù)傳遞給內(nèi)部的“wrapper()”函數(shù),并使用它測量執(zhí)行時間。這樣,我們就可以使用裝飾器來自動測量函數(shù)執(zhí)行的時間,而不需要手動添加代碼。

現(xiàn)在,我們可以調(diào)用calculate_sum()函數(shù)來計算列表的總和:

calculate_sum([1,2,3,4,5])

當我們運行上面的代碼時,裝飾器將自動測量calculate_sum()函數(shù)的執(zhí)行時間,并將結果輸出到控制臺。這樣,我們就可以通過裝飾器輕松地測量任何函數(shù)的執(zhí)行時間。

總之,裝飾器是Python中非常強大的概念,允許我們改變或增強函數(shù)的行為。通過定義一個帶有內(nèi)部包裝器函數(shù)的裝飾器,我們可以輕松地增強函數(shù)并自動執(zhí)行一些重復的任務,例如測量執(zhí)行時間。

關鍵詞:

上一篇:

下一篇:

精心推薦

X 關閉

X 關閉

產(chǎn)業(yè)