装饰器

 1 #!usr/bin/env python   
 2 #-*- coding=utf-8 -*-
 3 
 4 def outer(func):
 5     print('outer')
 6     def inner(*args,**kwargs):
 7         print('inner1')
 8         r = func(*args,**kwargs)
 9         print('inner2')
10         return r
11     print('outer2')
12     return inner
13 
14 
15 
16 @outer
17 def index(a1,a2):
18     print('很复杂')
19     return a1+a2
20 if __name__ == '__main__':
21     index(1,2)

其中 虽然分行写了

print ('outer')

以及

print('outer2')

但是最终结果是 1 outer 2 outer2 3 inner1 4 很复杂 5 inner2 

虽然代码可以这么写 达成outer 和outer2夹住 func()

 1 def outer(func):
 2 
 3     def inner(*args,**kwargs):
 4         print('outer')
 5         print('inner1')
 6         r = func(*args,**kwargs)
 7         print('inner2')
 8         print('outer2')
 9         return r
10 
11     return inner
12 
13 
14 
15 @outer
16 def index(a1,a2):
17     print('很复杂')
18     return a1+a2
19 if __name__ == '__main__':
20     index(1,2)

为了以后装饰器不出现错误 我决定还是用第二种方法进行装饰器的使用

posted @ 2017-12-15 09:09  双商略低的派生  阅读(113)  评论(0编辑  收藏  举报