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 大概就知道會做那些事了。
沒有留言:
張貼留言