欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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('這是個偶數(shù):',i)
    over=time.time()
    print("總共花費的時間:",over-start)
haha()

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

下面引入裝飾器:

1簡單的裝飾器操作:

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

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

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

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

例如這個函數(shù):

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

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

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

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

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

這是因為我們要接受返回值result,并將其用print()打印出來。

3,裝飾器的升級升級版(當我們需要使用的函數(shù)haha中,不但有返回值,還有傳入的參數(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('總共花費的時間:',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('這是個偶數(shù):',i)
            a=a+i
    return a
    #over=time.time()
    #print("總共花費的時間:",over-start)
aaa=haha(1200)
print(aaa)

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

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

相關(guān)文章

  • 自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫內(nèi)容實例

    自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫內(nèi)容實例

    這篇文章主要介紹了自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫內(nèi)容實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python數(shù)據(jù)結(jié)構(gòu)詳細

    Python數(shù)據(jù)結(jié)構(gòu)詳細

    本文將詳細講解Python的數(shù)據(jù)結(jié)構(gòu),下面我們將講解Python關(guān)于關(guān)于列表更多的內(nèi)容以及del 語句和元組和序列等一些具體內(nèi)容,需要的下伙伴可以參考一下
    2021-09-09
  • Python中time庫的使用(日期時間)

    Python中time庫的使用(日期時間)

    time庫是python中處理時間的標準庫,這篇文章主要介紹了Python中time庫的使用(日期時間),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • Python基于easygui實現(xiàn)pdf和word轉(zhuǎn)換小程序

    Python基于easygui實現(xiàn)pdf和word轉(zhuǎn)換小程序

    這篇文章主要為大家詳細介紹了Python如何基于easygui實現(xiàn)pdf和word轉(zhuǎn)換小程序,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • python實現(xiàn)TCP文件接收發(fā)送

    python實現(xiàn)TCP文件接收發(fā)送

    這篇文章主要為大家詳細介紹了python實現(xiàn)TCP文件接收發(fā)送,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • python3操作redis實現(xiàn)List列表實例

    python3操作redis實現(xiàn)List列表實例

    本文主要介紹了python3操作redis實現(xiàn)List列表實例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python模擬用戶登錄驗證

    Python模擬用戶登錄驗證

    這篇文章主要為大家詳細介紹了Python模擬用戶登錄驗證的相關(guān)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Python?Web?App開發(fā)Dockerfiles編寫示例

    Python?Web?App開發(fā)Dockerfiles編寫示例

    這篇文章主要為大家介紹了Python?Web?App編寫Dockerfiles的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Python flashtext文本搜索和替換操作庫功能使用探索

    Python flashtext文本搜索和替換操作庫功能使用探索

    本文將深入介紹Python flashtext庫,包括其基本用法、功能特性、示例代碼以及實際應(yīng)用場景,以幫助大家更好地利用這個有用的工具
    2024-01-01
  • tensorflow與numpy的版本兼容性問題的解決

    tensorflow與numpy的版本兼容性問題的解決

    這篇文章主要介紹了tensorflow與numpy的版本兼容性問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論