Python裝飾器和回呼函數

來源:互聯網
上載者:User

標籤:test   一個   range   ...   hello   切面   wrap   使用者   aik   

1.裝飾器

裝飾器用來實現一種切面功能,即一些函數在調用前都必須實現的功能,比如使用者是否登入,使用者是否有許可權這類需求,都很容易由裝飾器來實現。

import functoolsdef log(func):    @functools.wraps(func)    def wrapper(*args, **kw):        print(‘call %s():‘ % func.__name__)        return func(*args, **kw)    return wrapper@logdef now():    print(‘2015-3-25‘)給函數now定義了一個裝飾器log,實現功能:在調用函數之前,列印出函數的名字最終的輸出是:>>> now()call now():2015-3-25

2.回呼函數

回呼函數就是一個通過函數指標調用的函數。如果你把函數的指標(地址)作為參數傳遞給另一個函數,當這個指標被用來調用其所指向的函數時,我們就說這是回呼函數。回呼函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。

個人理解的回呼函數類似於這樣一種情況,產品經理需要實現某種功能,需要找到開發,開發說我可以幫你寫個函數實現這個功能,但是功能有點複雜,在不同的情況下需要傳入不同的參數,這個參數是需要你來給我的。

一般應用於對應某一事件觸發的函數。比方要實現爬蟲,我可以幫你寫個爬蟲函數,但是你首先得知道要爬蟲網站的URL,大概就是這樣一個意思。

回呼函數豐富了函數的調用方法,給開發帶來很多方便。

In [11]: def test(num):    ...:     for i in range(num):    ...:         print ‘hello,world‘In [13]: def call(times,funcname):    ...:     return funcname(times)In [14]: call(3,test)hello,worldhello,worldhello,world

 

Python裝飾器和回呼函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.