码迷,mamicode.com
首页 > 编程语言 > 详细

python之装饰器

时间:2016-05-05 17:22:33      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

一、简单装饰器:

 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()函数

python之装饰器

标签:

原文地址:http://www.cnblogs.com/zhangqigao/p/5462292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!