摘要:裝飾器早就應(yīng)該掌握的技能。。。。裝飾器本質(zhì)是函數(shù),用來裝飾其他的函數(shù),給他們附加功能。
python 裝飾器
早就應(yīng)該掌握的技能。。。。
裝飾器:本質(zhì)是函數(shù),用來裝飾其他的函數(shù),給他們附加功能。
實現(xiàn)裝飾器要素:
函數(shù)既‘變量’,以操作變量的形式操作函數(shù);
高階函數(shù)和嵌套函數(shù)的使用;
函數(shù)既‘變量’代碼舉例:
import time def func(f): """ 將函數(shù)以變量的形式傳遞進來 """ start = time.time() f() end = time.time() print("函數(shù)f(也就是test)的運行時間是:{}".format(end-start)) print("in func....") return f def test(): time.sleep(2) print("in test.....") val = func(test) # val == test val() # test() # 以上實現(xiàn)了一個特別native的裝飾器功能, # 在func內(nèi)部可以增加其他功能(例如計算函數(shù)運行時間),最后return f嵌套函數(shù)
進一步改進:
import time def decorator(func): def process(): start = time.time() func() end = time.time() print("函數(shù)func(也就是被裝飾的函數(shù))的運行時間是:{}".format(end-start)) return process def decorated(): time.sleep() print("decorated function") decorated = decorator(decorated) # decorated = return 來的process decorated() # 也就是調(diào)用process
最終版:
import time def decorator(func): def process(): start = time.time() func() end = time.time() print("函數(shù)func(也就是被裝飾的函數(shù))的運行時間是:{}".format(end-start)) return process @decorator # python 裝飾器的正確使用 def decorated(): time.sleep() print("decorated function") # 此時不用再像上面一樣賦值,可以直接調(diào)用 decorated()
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/43065.html
摘要:教程譯文首發(fā)自我的博客我們將創(chuàng)建一個簡單的數(shù)據(jù)庫驅(qū)動的筆記本應(yīng)用。本教程面向想學(xué)習(xí)如何使用開發(fā)網(wǎng)站或者應(yīng)用的初學(xué)者。在剛創(chuàng)建的文件中,創(chuàng)建一個名為的文件。現(xiàn)在,我們將創(chuàng)建一個函數(shù),并且使用裝飾器將它綁定到一個上。 showImg(https://segmentfault.com/img/remote/1460000006765797); 教程譯文首發(fā)自我的博客:Defshines Bl...
摘要:裝飾器的使用符合了面向?qū)ο缶幊痰拈_放封閉原則。三簡單的裝飾器基于上面的函數(shù)執(zhí)行時間的需求,我們就手寫一個簡單的裝飾器進行實現(xiàn)。函數(shù)體就是要實現(xiàn)裝飾器的內(nèi)容。類裝飾器的實現(xiàn)是調(diào)用了類里面的函數(shù)。類裝飾器的寫法比我們裝飾器函數(shù)的寫法更加簡單。 目錄 前言 一、什么是裝飾器 二、為什么要用裝飾器 ...
摘要:希望引以為戒鄭傳裝飾模式如果你了解,你肯定聽過裝飾器模式。在面向?qū)ο笾?,裝飾模式指動態(tài)地給一個對象添加一些額外的職責(zé)。就增加一些功能來說,裝飾模式比生成子類更為靈活。 漫談 如果作為一個Python入門,不了解Python裝飾器也沒什么,但是如果作為一個中級Python開發(fā)人員,如果再不對python裝飾器熟稔于心的話,那么可能并沒有量變積累到質(zhì)變。 我以前也看過很多講python 裝...
摘要:一般情況下,我們使用裝飾器提供的語法糖,來簡化上面的寫法像上面的情況,可以動態(tài)修改函數(shù)或類功能的函數(shù)就是裝飾器。本文標(biāo)題為會打扮的裝飾器本文鏈接為參考資料修飾器的函數(shù)式編程中的裝飾器介紹思誠之道裝飾器入門與提高賴明星 裝飾器 我們知道,在 Python 中,我們可以像使用變量一樣使用函數(shù): 函數(shù)可以被賦值給其他變量 函數(shù)可以被刪除 可以在函數(shù)里面再定義函數(shù) 函數(shù)可以作為參數(shù)傳遞給另外...
閱讀 1784·2021-11-12 10:35
閱讀 1705·2021-08-03 14:02
閱讀 2771·2019-08-30 15:55
閱讀 2103·2019-08-30 15:54
閱讀 844·2019-08-30 14:01
閱讀 2493·2019-08-29 17:07
閱讀 2317·2019-08-26 18:37
閱讀 3108·2019-08-26 16:51