装饰器
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)
为了以后装饰器不出现错误 我决定还是用第二种方法进行装饰器的使用