装饰器
  定义:本质是函数,(装饰其他函数),即为其他函数添加附加功能。
  原则: 1、不能修改被装饰的函数的源代码;
            2、不能修改被装饰的函数的调用方式。

实现装饰器知识储备:
   1. 函数即'变量'        
   2. 高阶函数
       a. 把一个函数名当作实参传递给另一个函数(在不修改被装饰函数源代码的前提下为其添加新功能)
       b. 返回值中包含函数名(不修改函数的调用方式)
   3. 嵌套函数

高阶函数 + 嵌套函数 (组成)--> 装饰器

  1、必备                                                

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: antcolonies


'''第一波'''

def foo():
    print('in the foo')

foo               # 函数名,相当于变量
print(foo)        # <function foo at 0x0000000001CFCBF8>  变量的索引地址
foo()             # in the foo    执行/调用函数foo


'''第二波'''

def foo(x):
    print('in the foo_%d' %x)

foo = lambda x:x+1

print(foo)

print(foo(1))     # 执行下面的lambda表达式,而不再是原来的foo函数,因为函数 foo 被重新定义了


'''
<function foo at 0x0000000001CFCBF8>
in the foo
<function <lambda> at 0x0000000001CFCBF8>
2
'''

 

  2、需求来了                                       

初创公司有N个业务部门,1个基础平台部门,基础平台负责提供底层的功能,如:数据库操作、redis调用、监控API等功能。业务部门使用基础功能时,只需调用基础平台提供的功能即可。如下:

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # Author: antcolonies
 4 
 5 ############### 基础平台提供的功能如下 ###############
 6 
 7 def f1():
 8     print('in the f1')
 9 
10 def f2():
11     print('in the f2')
12 
13 def f3():
14     print('in the f3')
15 
16 def f4():
17     print('in the f4')
18 
19 ############### 业务部门A 调用基础平台提供的功能 ###############
20 
21 f1()
22 f2()
23 f3()
24 f4()
25 
26 ############### 业务部门B 调用基础平台提供的功能 ###############
27 
28 f1()
29 f2()
30 f3()
31 f4()
function call

相关文章:

  • 2022-02-24
  • 2021-11-02
  • 2021-06-26
  • 2021-09-16
  • 2021-12-28
  • 2022-02-22
猜你喜欢
  • 2021-09-30
  • 2021-07-20
  • 2022-01-25
  • 2021-07-16
  • 2021-09-13
  • 2022-12-23
相关资源
相似解决方案