下面的程序示例了python装饰器的使用:
#!/usr/bin/env python
#coding:utf-8
def Filter(before_func,after_func):
print before_func
print after_func
def outer(main_func):
print main_func
def wrapper(request,kargs):
before_result=before_func(request,kargs)
if(before_result!=None):
return before_result;
main_result=main_func(request,kargs)
if(main_result!=None):
return main_result;
after_result=after_func(request,kargs)
if(after_result!=None):
return after_result;
return wrapper
return outer
def before(request,kargs):
print request,kargs,'之前!'
def after(request,kargs):
print request,kargs,'之后!'
@Filter(before,after)
def main(request,kargs):
print request,kargs
main('hello','python')
print main
运行结果:
<function before at 0x02AC7BF0>
<function after at 0x02AC7C30>
<function main at 0x02AC7CF0>
hello python 之前!
hello python
hello python 之后!
<function wrapper at 0x02AC7D30>
我们可以加上很多断点,在Debug模式下运行,查看程序一步一步的运行轨迹。。。