1 def outer(func): 2 def inner(): 3 print("who are you?") 4 r = func() 5 print('nice to meet you!') 6 return inner 7 8 @outer 9 def f1(): 10 print('i am 梅乐乐') 11 12 def outer(func): 13 def inner(): 14 print("And who are you?") 15 r = func() 16 print('来呀客官!') 17 return inner 18 19 @outer 20 def f2(): 21 print('i am 奥巴马,梅乐我想**你!') 22 23 f1() 24 f2() 25 26 #哈哈哈
@outer:
将@outer以下的函数的函数名作为outer函数的参数,将outer函数的返回值赋值给@outer以下的函数
2.当一个装饰器要装饰许多带有不同数量的参数的函数的时候,采用如下方法:
1 def outer(func): 2 def inner(*args,**kwargs): 3 print('hello') 4 func(*args,**kwargs) 5 print('hi') 6 return inner 7 8 @outer 9 def f1(a1): 10 print('asd') 11 @outer 12 def f2(b1,b2): 13 print('ert') 14 @outer 15 def f3(c1,c2,c3): 16 print('wer') 17 @outer 18 def f4(d1,d2,d3,d4,d5): 19 print('23445') 20 21 f1(1) 22 f2(2,3) 23 f3(4,5,6) 24 f4(7,8,9,10,11)
3.多个装饰器装饰一个函数。
1 def outer0(func): 2 def inner(*args,**kwargs): 3 print('ok!') 4 func(*args,**kwargs) 5 return inner 6 7 8 def outer(func): 9 def inner(*args,**kwargs): 10 print('hello') 11 func(*args,**kwargs) 12 print('hi') 13 return inner 14 15 16 @outer0 17 @outer 18 def index(a1): 19 print('asd') 20 21 22 index(1)