python 设计模式之装饰器模式
-
定义:
- 在不修改原有代码的前提下,增加额外的功能。装饰器的返回值是一个函数对象。
-
使用场景:
- 插入日志、性能测试、事务处理、缓存、权限校验等
-
案例:
#!/usr/bin/python3 # -*- coding:utf-8 -*- # @Author : Charlie Zhang # @Email : charlie.zhang@wiwide.com # @Time : 2021/3/25 20:51 # @Version : 1.0 # @File : decorator.py # @Software : PyCharm import time def check_step(func): func_name = func.__doc__ def new_func(*args, **kwargs): start = time.time() print("{}: {} 开始执行".format(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), func_name)) result = func(*args, **kwargs) end = time.time() print("{}: {} 执行完成,耗时{}秒".format( time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), func_name, "%.2f" % (end - start,), )) return result return new_func @check_step def test(): """这是一个测试函数""" print('running...') time.sleep(3) if __name__ == '__main__': test() 结果: 2021-03-25 21:03:23: 这是一个测试函数 开始执行 running... 2021-03-25 21:03:26: 这是一个测试函数 执行完成,耗时3.00秒