装饰器

装饰器:本质是函数,用来装饰其他函数,为其他函数添加附加功能

原则:不能修改被装饰函数的源代码及调用方式

实现装饰器的知识点:

1、函数即“变量”

2、高阶函数

  a、把一个函数名当作实参传给另一个函数

  b、返回值中包含函数名

3、嵌套函数


  不带参数的装饰器

 1 import time
 2 
 3 def timer(func): 
 4     def ff(*args,**kwargs):
 5         start_time = time.time()
 6         func(*args,**kwargs)
 7         end_time = time.time()
 8         print('run times {}'.format(end_time - start_time))
 9     return ff
10 @timer
11 def test1():
12     time.sleep(3)
13     print('in the test1')
14 
15 test1()

 带参数的装饰器

 1 import time
 2 
 3 def timer(type='sort'): #装饰器
 4     def outer(func):
 5         def ff(*args,**kwargs):
 6             if type == 'sort':
 7                 start_time = time.time()
 8                 func(*args,**kwargs)
 9                 end_time = time.time()
10                 print('run times {}'.format(end_time - start_time))
11             elif type == 'long':
12                 print('long')
13         return ff
14     return outer
15 @timer()
16 def test1():
17     time.sleep(3)
18     print('in the test1')
19 
20 test1()
原文地址:https://www.cnblogs.com/gaowy/p/9723897.html