会飞的蝌蚪君

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 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)

 

posted on 2018-01-25 22:26  会飞的蝌蚪  阅读(117)  评论(0编辑  收藏  举报