def demo_callback(callback); #do something if need callback() #do something if need
而在 python 中的 decorator 是個語法糖衣。讓程式設計師,可以在不修改原本函數的內容下,為原本函數加上新的功能。實作上,就只是把建立一個新 function ,與原本 function 同名,把舊的 function 蓋掉。
def call_after(func): def wrapper(wrapped_func): def inner_wrapper(): func() wrapped_func() return inner_wrapper return wrapper def update_counter(): print 'update counter' @call_after(update_counter) def demo_func(): print 'do something' demo_func()
上面這個例子是,利用 decorator 來做到確保每次執行 demo_func 前,會先執行 update_counter。使用 decorator 可以在不修改原先 function 下,進行新功能。
附帶一提, callback function 可以在 runtime 時決定,不過 decorator 卻是寫完 code 大概就知道會做那些事了。
沒有留言:
張貼留言