python基礎學習12----修飾器

來源:互聯網
上載者:User

標籤:--   int   控制   利用   end   pytho   tar   其他   outer   

修飾器可以在不修改目標函數代碼的前提下, 在目標函數執行前後增加一些額外功能

例如有一個簡單的函數

import time
def func1():
print("這是一個簡單的函數")
time.sleep(2)

想給這個函數增加一個計算用時的功能,那麼可以利用修飾器

讓該函數使用修飾器,即在函數的定義的上方添加@函數名,如下,其相當於將func1=outer(func1)寫到後邊的程式中

至於函數外的參數在函數中使用的原因是閉包

import time
def outer(f): def inner(): start = time.time() f() end = time.time() print(end-start) return inner@outer#func1=outer(func1)def func1(): print("這是一個簡單的函數") time.sleep(2)func1()
#輸出
這是一個簡單的函數

2.000551223754883

若是一個有參數的函數需要修飾則

def outer(f):    def inner(x,y):        start = time.time()        f(x,y)        end = time.time()        print(end-start)    return inner@outer#func1=outer(func1)def add(x,y):    print(x+y)    time.sleep(2)add(1,2)

若想要在修飾器中加一些其他語句如判斷語句來控制某些功能是否使用

import timedef judge(flag=True):    def outer(f):        def inner(x,y):            start = time.time()            f(x,y)            end = time.time()            print(end-start)        return inner    if flag==True :        print("這是一個功能")    return outer@judge()#judge()其實相當於outer,除此之外可以在此添加參數def add(x,y):    print(x+y)    time.sleep(2)add(1,2)

  

 

python基礎學習12----修飾器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.