python 设计模式之装饰器模式

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值