标签:
一、简单装饰器:
1 #定义装饰器函数 2 def W1(main_func): 3 def outer(): 4 print("before") 5 show() 6 print("after") 7 return outer 8 9 #使用装饰器 10 @W1 11 def show(): 12 pass 13 14 #执行show方法 15 show()
执行步骤:
1、@W1
执行W1,把自己装饰的函数的函数名当做参数,即@W1 等价于W1(show)。
show()函数重新定义,即重新定义的show()函数等价于W1(show)返回值。
在重新定义的show()函数中去执行之前定义的函数。
二、带参数装饰器:
1 #之前函数 2 def Before(request,kargs): 3 print ‘before‘ 4 5 #之后函数 6 def After(request,kargs): 7 print ‘after‘ 8 9 #装饰器函数 10 def Filter(before_func,after_func): 11 def outer(main_func): 12 def wrapper(request,kargs): 13 14 before_result = before_func(request,kargs) 15 if(before_result != None): 16 return before_result; 17 18 main_result = main_func(request,kargs) 19 if(main_result != None): 20 return main_result; 21 22 after_result = after_func(request,kargs) 23 if(after_result != None): 24 return after_result; 25 26 return wrapper 27 return outer 28 29 #使用装饰器 30 @Filter(Before, After) 31 def Index(request,kargs): 32 print ‘index‘
执行步骤:
1、执行Filter(Before, After)函数。
2、@outer
3、重新定义Index()函数
标签:
原文地址:http://www.cnblogs.com/zhangqigao/p/5462292.html