一、装饰器

装饰器的存在是为了实现开放封闭原则:  

  • 封闭: 已实现的功能代码块不应该被修改;
  • 开放: 对现有功能的扩展开放。

理解装饰器的三要素:

  • 函数的作用域
  • 高阶函数
  • 闭包

1. 闭包

闭包定义:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)

def test_1(x = 20):
    def test_2():                                           # 条件一: test_2就是内部函数
        print(x)                                            # 条件二: 对外部函数变量的引用
    return test_2()                                         # 结论: 内部函数test_2就是一个闭包
test_1()

 2. 装饰器的应用

现在有如下一段代码,需要测算出代码的执行时间。

def foo():
    print('foo...')
foo()

对功能进行扩展:

由于代码执行太快,使用sleep暂停2s,此次修改没有执行开放封闭原则,修改了原代码。

import time
def foo():
    start = time.time()
    print('foo...')
    time.sleep(2)
    end = time.time()
    print(end - start)

foo()
View Code

相关文章:

  • 2021-08-28
  • 2021-07-09
  • 2022-03-07
  • 2021-10-14
  • 2021-07-08
  • 2021-08-31
猜你喜欢
  • 2021-07-14
  • 2021-10-27
  • 2022-12-23
  • 2022-02-20
  • 2021-12-21
  • 2021-10-01
  • 2022-02-20
相关资源
相似解决方案