標籤: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裝飾器和回呼函數