Python裝飾器和回調函數

1.裝飾器app

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

import functools

def log(func):
    @functools.wraps(func)
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper

@log
def now():
    print('2015-3-25')

給函數now定義了一個裝飾器log,實現功能:在調用函數以前,打印出函數的名字

最終的輸出是:
>>> now()
call now():
2015-3-25

2.回調函數網站

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

我的理解的回調函數相似於這樣一種狀況,產品經理須要實現某種功能,須要找到開發,開發說我能夠幫你寫個函數實現這個功能,可是功能有點複雜,在不一樣的狀況下須要傳入不一樣的參數,這個參數是須要你來給個人。指針

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

回調函數豐富了函數的調用方法,給開發帶來不少方便。blog

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,world
hello,world
hello,world
相關文章
相關標籤/搜索