修饰带参数函数
1.带参数函数func1
def func1(arg): print arg
2.装饰器
def outer(fun): def wrapper(arg): print 'test' fun(arg) return wrapper
装饰器outer时期返回函数wrapper,由于要func1 带有参数,如需要将wrapper的函数带上参数,func1被装饰后重新定义为:
func1(arg)=wrapper(arg)= { print 'test' func1(arg) }
在修饰器中使用函数修饰
要添加的额外函数有
def before(): print 'before' def after(): print 'after'
主体函数:
def main(): print 'main'
装饰器:
def filter(before_func,after_func): #要在主体函数前 和 函数后再执行的函数名 def outer(main_func): def wrapper(): before_result=before_func() #如果前函数不为None,则执行 if(before_result!=None): return before_result main_result=main_func() #执行主体函数 if(main_result!=None): return main_result after_result=after_func() #如果后函数不为None,则执行 if(after_result!=None): return after_result return wrapper return outer
执行结果,打印出:
before
main
after