本文实例讲述了Python装饰器用法。分享给大家供大家参考,具体如下:
下面的程序示例了python装饰器的使用:
示例一:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
def outer(fun):
print fun
def wrapper(arg):
result = fun(arg)
print 'over!'
return result
return wrapper
@outer
def func1(arg):
print 'func1' ,arg
return 'very good!'
response = func1( 'python' )
print response
print func1
|
运行结果:
1
2
3
4
5
|
<function func1 at 0x02A67D70 >
func1 python
over!
very good!
<function wrapper at 0x02A67CF0 >
|
示例二:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#!/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
|
运行结果:
1
2
3
4
5
6
7
|
<function before at 0x02AC7BF0 >
<function after at 0x02AC7C30 >
<function main at 0x02AC7CF0 >
hello python 之前!
hello python
hello python 之后!
<function wrapper at 0x02AC7D30 >
|
我们可以加上很多断点,在Debug模式下运行,查看程序一步一步的运行轨迹。。。
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://blog.csdn.net/sxingming/article/details/52386117