Python—装饰器
一 装饰器 1.1 什么是装饰器 器:指的是具备某一功能的工具 装饰:指的是为被装饰器对象添加新功能 装饰器就是用来为被装饰器对象添加新功能的工具 注意:装饰器本身可以是任意可调用对象,被装饰器的对象也可以是任意可调用对象 2.2 为何要用装饰器 软件的设计应该遵循开放封闭原则,既对功能扩展是开放的,而对修改是封闭的。 二 装饰器的实现 函数装饰器分为:无参装饰器和有参装饰器两种,二者的实现原理一样,都是'函数嵌套+闭包+函数对象'的组合使用的产物。 装饰器的实现必须遵循两大原则: 1. 不修改被装饰对象的源代码 2. 不修改被装饰器对象的调用方式 如果想为下述函数添加统计其执行时间的功能 import time def download_movie(): print('开始下载电影...') # 模拟电影下载时间3秒 time.sleep(3) # 等待3秒 print('电影下载成功...') download_movie() # 函数执行 遵循不修改被装饰对象源代码的原则,我们想到的解决方法可能是这样 start_time = time.time() # 获取当前时间戳 download_movie() end_time = time.time() # 获取当前时间戳 print(f'消耗时间:{end_time - start_time}')