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