世界最資訊丨再看看python的裝飾器模式
在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í)行時間。
關鍵詞:
精心推薦
- 世界最資訊丨再看看python的裝飾器模式
- 讓美麗生“金”,江蘇宜興著力建設宜居宜業(yè)宜游幸福之城
- 當前焦點!以生為本打造高效課堂_以生為本
- 泰腐《歪愛時代》,大少爺和少奶奶之間的二三事,劇情真甜 新資訊
- 努力工作的話
- 伊戈爾:公司會根據(jù)客戶需求和業(yè)務開拓的情況提前布局或者調(diào)整相應的產(chǎn)能 天天微動態(tài)
- 500元送媽媽什么生日禮物好 世界聚看點
- 新日電動車怎么樣價格(新日電動車怎么樣)-即時焦點
- 緬懷革命先烈,繼承紅色基因——南岳完小開展清明節(jié)祭奠先烈活動_今日熱搜
- 年輕人鐘意夜生活,成都夜間消費領跑新一線城市
- 360文檔中心入口_360文檔_新資訊
- 楊梅如何才能清洗干凈 楊梅怎么才能清洗干凈-當前滾動
- 冬天送女友什么禮物
- 環(huán)球通訊!東風汽車集團原黨委副書記黃偉出任哈電集團總經(jīng)理、黨委副書記
-
1、解釋:繪:描繪,描摹。2、形容敘述或描寫生動逼真。3、全部解釋:把人物的聲音、神色都描繪出來。4、形容敘述、描寫
-
1、《普通高等教育十一五規(guī)劃教材·就業(yè)與創(chuàng)業(yè)》是2008年中國電力出版社出版的圖書。2、作者是程文義。文章到此就分享結束
-
1、蒺藜為蒺藜科植物蒺藜的干燥成熟果實,蒺藜別名有蒺藜蔓、蒺藜苗,蒺藜的功效是平肝解郁、活血祛風、明目、止癢、除濕、消癰
-
明冠新材(SH688560,收盤價:33 83元)4月4日晚間發(fā)布公告稱,截至2023年3月31日,公司通過上海證券交易所交易系統(tǒng)以集中競價交易方式已累計回
-
1、沉魚落雁鳥驚喧,閉月羞花花愁顫他年我若為青帝,報與桃紅一處開不是花中偏愛菊此花開盡更無花感時花濺淚恨別鳥驚
X 關閉
X 關閉
產(chǎn)業(yè)
-
不用跑北京 在家門口也能掛上頂...
日前,我省首個神經(jīng)疾病會診中心——首都醫(yī)科大學宣武醫(yī)院河北醫(yī)院...
-
“十四五”期間 河北省將優(yōu)化快...
從省郵政管理局獲悉,十四五期間,我省將優(yōu)化快遞空間布局,著力構...
-
張家口市宣化區(qū):光伏發(fā)電站賦能...
3月19日拍攝的張家口市宣化區(qū)春光鄉(xiāng)曹莊子村光伏發(fā)電站。張家口市宣...
-
“張同學”商標被多方搶注 涉及...
“張同學”商標被多方搶注,官方曾點名批評惡意搶注“丁真” ...
-
山東濟南“防詐奶奶團”花式反詐...
中新網(wǎng)濟南12月15日電 (李明芮)“老有所為 無私奉獻 志愿服...
-
廣州新增1例境外輸入關聯(lián)無癥狀...
廣州衛(wèi)健委今日通報,2021年12月15日,在對入境轉運專班工作人...
-
西安報告初篩陽性病例轉為確診病例
12月15日10:20,經(jīng)陜西西安市級專家組會診,西安市報告新冠病毒...
-
廣東東莞新增本土確診病例2例 ...
(抗擊新冠肺炎)廣東東莞新增本土確診病例2例 全市全員核酸檢測...
-
中緬邊境臨滄:民警深夜出擊搗毀...
中新網(wǎng)臨滄12月15日電 (胡波 邱珺琿)記者15日從云南臨滄邊境...
-
“土家鼓王”彭承金:致力傳承土...
中新網(wǎng)恩施12月15日電 題:“土家鼓王”彭承金:致力傳承土家...