最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的Decorator裝飾器的使用示例

 更新時(shí)間:2022年12月01日 10:41:22   作者:漂泊的小森  
裝飾器(decorator)在Python框架中扮演著重要角色,是Python中實(shí)現(xiàn)切面編程(AOP)的重要手段,本文將通過(guò)簡(jiǎn)單的示例和大家介紹下具體的使用方法,希望對(duì)大家有所幫助

#最近在網(wǎng)上看代碼時(shí),出現(xiàn)了@???的代碼,看了好久也不知道是什么意思,經(jīng)過(guò)了解原來(lái)是裝飾器,我給大家舉個(gè)例子講解一下,幫助大家快速理解:

##大家在寫函數(shù)的時(shí)候,可能會(huì)想測(cè)試這個(gè)函數(shù)的運(yùn)行時(shí)間,如果每個(gè)函數(shù)都加一個(gè)類似于:

start=time.time()
函數(shù)主體
over=time.time()
Time=over-start
print(Time)
def haha():
    start=time.time()
    for i in range(1200):
        if i%2==0:
            print('這是個(gè)偶數(shù):',i)
    over=time.time()
    print("總共花費(fèi)的時(shí)間:",over-start)
haha()

這樣函數(shù)的可讀性也不高,如果要測(cè)試好幾個(gè)函數(shù)還會(huì)大量浪費(fèi)時(shí)間。

下面引入裝飾器:

1簡(jiǎn)單的裝飾器操作:

(先定義一個(gè)函數(shù)1(里面?zhèn)鬟f一個(gè)參數(shù)),然后在函數(shù)1里面再定義一個(gè)函數(shù)2負(fù)責(zé)計(jì)算時(shí)間,并在時(shí)間中間調(diào)用定義函數(shù)1的參數(shù),然后返回這個(gè)函數(shù)2):

!!!當(dāng)我們想調(diào)用裝飾器時(shí),只需@函數(shù)1的名字,放在想要使用的函數(shù)前面即可。

import time
def decorator(fun):
    def wrapper():
        t1=time.time()
        fun()
        t2=time.time()
        print('總共花費(fèi)的時(shí)間:',t2-t1)
    return wrapper
@decorator
def haha():
    #start=time.time()
    for i in range(1200):
        if i%2==0:
            print('這是個(gè)偶數(shù):',i)
    #over=time.time()
    #print("總共花費(fèi)的時(shí)間:",over-start)
haha()

2,裝飾器升級(jí)版(如果我們想套用的函數(shù)中,具有返回對(duì)應(yīng)的值這個(gè)功能共時(shí)使用):

例如這個(gè)函數(shù):

def haha():
    a=0
    #start=time.time()
    for i in range(1200):
        if i%2==0:
            print('這是個(gè)偶數(shù):',i)
            a=a+i
    return a

#我們?nèi)绻€用1中的裝飾器就不能返回對(duì)應(yīng)的值,這就需要改動(dòng)裝飾器:

(在裝飾器中也要把函數(shù)中定義參數(shù)的返回值給表示出來(lái),并且利用return 給返回值,輸出出來(lái))

import time
def decorator1(fun):
    def wrapper2():
        t1=time.time()
        result=fun()
        t2=time.time()
        print('總共花費(fèi)的時(shí)間:',t2-t1)
        return result
    return wrapper2
@decorator1
def haha():
    a=0
    #start=time.time()
    for i in range(1200):
        if i%2==0:
            print('這是個(gè)偶數(shù):',i)
            a=a+i
    return a
    #over=time.time()
    #print("總共花費(fèi)的時(shí)間:",over-start)
aaa=haha()
print(aaa)

可能有同學(xué)會(huì)問,為什么后面要用到aaa=haha(),

這是因?yàn)槲覀円邮芊祷刂祌esult,并將其用print()打印出來(lái)。

3,裝飾器的升級(jí)升級(jí)版(當(dāng)我們需要使用的函數(shù)haha中,不但有返回值,還有傳入的參數(shù)時(shí)使用。)

(只需要在我們的函數(shù)2和調(diào)用的函數(shù)1中的參數(shù)()里面加上關(guān)鍵字傳參*args,即可)

import time
def decorator1(fun):
    def wrapper2(*args):
        t1=time.time()
        result=fun(*args)
        t2=time.time()
        print('總共花費(fèi)的時(shí)間:',t2-t1)
        return result
    return wrapper2
@decorator1
def haha(key):
    a=0
    #start=time.time()
    for i in range(key):
        if i%2==0:
            print('這是個(gè)偶數(shù):',i)
            a=a+i
    return a
    #over=time.time()
    #print("總共花費(fèi)的時(shí)間:",over-start)
aaa=haha(1200)
print(aaa)

可不要忘了,調(diào)用函數(shù)haha時(shí)要傳入?yún)?shù)哦。

到此這篇關(guān)于Python中的Decorator裝飾器的使用示例的文章就介紹到這了,更多相關(guān)Python Decorator內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python基礎(chǔ)教程之循環(huán)語(yǔ)句(for、while和嵌套循環(huán))

    Python基礎(chǔ)教程之循環(huán)語(yǔ)句(for、while和嵌套循環(huán))

    這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之循環(huán)語(yǔ)句(for、while和嵌套循環(huán))的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Sphinx生成python文檔示例圖文解析

    Sphinx生成python文檔示例圖文解析

    這篇文章主要介為大家紹了Sphinx生成python文檔示例圖文解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • python實(shí)現(xiàn)的希爾排序算法實(shí)例

    python實(shí)現(xiàn)的希爾排序算法實(shí)例

    這篇文章主要介紹了python實(shí)現(xiàn)的希爾排序算法,實(shí)例分析了基于Python實(shí)現(xiàn)希爾排序的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Python中的pprint折騰記

    Python中的pprint折騰記

    這篇文章主要介紹了Python中的pprint折騰記,本文著重講解pprint的使用,并給出使用實(shí)例,需要的朋友可以參考下
    2015-01-01
  • Python執(zhí)行遺傳編程gplearn庫(kù)使用實(shí)例探究

    Python執(zhí)行遺傳編程gplearn庫(kù)使用實(shí)例探究

    這篇文章主要為大家介紹了Python執(zhí)行遺傳編程gplearn庫(kù)使用實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 使用wxpy實(shí)現(xiàn)自動(dòng)發(fā)送微信消息功能

    使用wxpy實(shí)現(xiàn)自動(dòng)發(fā)送微信消息功能

    這篇文章主要介紹了使用wxpy實(shí)現(xiàn)自動(dòng)發(fā)送微信消息功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python?Traceback(most?recent?call?last)報(bào)錯(cuò)信息:示例解讀

    Python?Traceback(most?recent?call?last)報(bào)錯(cuò)信息:示例解讀

    這篇文章主要介紹了Python?Traceback(most?recent?call?last)報(bào)錯(cuò)信息:示例解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 淺談Python pygame繪制機(jī)制

    淺談Python pygame繪制機(jī)制

    今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python pygame繪制機(jī)制展開,文中有非常詳細(xì)的介紹及圖文示例,需要的朋友可以參考下
    2021-06-06
  • 基于Python編寫windows電腦用戶操作記錄查看器

    基于Python編寫windows電腦用戶操作記錄查看器

    這篇文章主要為大家詳細(xì)介紹了如何基于Python編寫一個(gè)windows電腦用戶操作記錄查看器,可以讀取系統(tǒng)現(xiàn)有的日志記錄用戶,感興趣的小伙伴可以了解下
    2025-02-02
  • Python 函數(shù)裝飾器應(yīng)用教程

    Python 函數(shù)裝飾器應(yīng)用教程

    函數(shù)裝飾器是Python提供的一種增強(qiáng)函數(shù)功能的標(biāo)記函數(shù),本文將帶大家深入學(xué)習(xí)一下Python 函數(shù)裝飾器,感興趣的同學(xué)跟隨小編一起學(xué)習(xí)吧
    2021-12-12

最新評(píng)論

马鞍山市| 武定县| 保康县| 屏南县| 瑞丽市| 武宣县| 花垣县| 托克托县| 中牟县| 永泰县| 台山市| 青河县| 嘉禾县| 河东区| 三台县| 宣化县| 霍山县| 芒康县| 曲阳县| 武强县| 偏关县| 开平市| 神农架林区| 惠水县| 阿拉善左旗| 朝阳县| 都昌县| 石城县| 玉溪市| 隆安县| 灵丘县| 富源县| 黑龙江省| 湖口县| 腾冲县| 温州市| 兴城市| 黄梅县| 尉氏县| 浦县| 彭阳县|