zoukankan      html  css  js  c++  java
  • 装饰器

    1.什么是装饰器?
    器指的是工具,可以定义成函数
    装饰指的是为其他事物添加额外的东西点缀
    合在一起的意思是:装饰器指的是定义一个函数,该函数为其他函数增加额外的功能
    2.为何要用装饰器?
    开放封闭原则:开放指的是对拓展功能是开放的,封闭指的是对修改源代码是封闭的
    装饰器就是在不修改被装饰器对象源代码以及调用方式的前提下为被修饰对象添加新功能
    # 需求:在不修改index函数的源代码以及调用方式的前提下为其添加统计运行时间的功能
    # def index(x,y):
    # time.sleep(3)
    # print('index %s %s' %(x,y))
    # 方案一:改变了源代码
    # import time
    # def index(x,y):
    # start_time=time.time()
    # time.sleep(1)
    # print('index %s %s' %(x,y))
    # end_time=time.time()
    # print("运行时间为:%s"%(end_time-start_time))
    # index(1,2)
    # 方案二:源代码不变 但出现代码冗余
    # import time
    # def index(x,y):
    # time.sleep(3)
    # print('index %s %s' %(x,y))
    # start_time=time.time()
    # index(1,2)
    # end_time=time.time()
    # print("运行时间为:%s"%(end_time-start_time))
    # start_time=time.time()
    # index(5,6)
    # end_time=time.time()
    # print("运行时间为:%s"%(end_time-start_time))
    # 方案三:源代码不变,冗余减小,但只对于index函数有效
    # import time
    # def index(x,y):
    # time.sleep(3)
    # print('index %s %s' %(x,y))
    # def wrapper(x,y):
    # start_time=time.time()
    # index(x,y)
    # end_time=time.time()
    # print("运行时间为:%s"%(end_time-start_time))
    # wrapper(1,2 )
    # 方案三优化:
    import time
    def timer(func):
    def wrapper(*args,**kwargs):
    start_time=time.time()
    res=func(*args,**kwargs)
    end_time=time.time()
    print("运行时间为:%s"%(end_time-start_time))
    return res
    return wrapper
    # timer=timer(index)
    # timer(1,2)
    @timer
    def index(x,y):
    time.sleep(3)
    print('index %s %s' %(x,y))
    index(5,6)
    @timer
    def haha():
    time.sleep(1)
    print("小朋友你是不是有很多问好?")
    return 666
    # timer=timer(haha)#@timer 等价于timer=timer(haha)
    # res=timer()
    # print(res)
    haha()
  • 相关阅读:
    HTTP POST GET 本质区别详解
    追求代码质量: 监视圈复杂度
    【置顶】用Eclipse开发Android应用程序索引贴
    Android访问WCF服务(上篇)服务端开发
    做一个T型技术人才
    创新创业大讲堂第一讲
    河海嵌芯FTP服务器开通运行
    嵌芯队团队邮箱以及邮件订阅功能使用说明
    基于视频的公共事件检测分析系统
    感知交通基于视频的交通流特征参数监测及交通综合信息服务系统
  • 原文地址:https://www.cnblogs.com/mayrain/p/12555381.html
Copyright © 2011-2022 走看看