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

    一:开放封闭原则,对扩展是开放的,对修改是封闭的

    二:装饰器,装饰器本质可以是任意可调用的对象,被装饰的对象也可以是任意可调用对象
    装饰器的功能是:
    在不修改被装饰对象源代码以及调用方式的前提下为其添加新功能

    原则:
    1.不修改源代码
    2.不修改调用方法
    目标:添加新功能
    装饰器的语法:在被装饰对象的正上方的单独一行。@装饰器名字
    import time
    import random
    #装饰器
    def timmer(func):#func=index
        #func=index
        def wrapper():
            start_time=time.time()
            func()#index
            stop_time=time.time()
            print('run time is %s' %(stop_time-start_time))
        return wrapper
    #被装饰函数
    @timmer              #index=timer(index)
    def index():
        time.sleep(random.randrange(1,5))
        print('welecome to index page')
    
    @timmer
    def home():
        time.sleep(random.randrange(1, 3))
        print('welecome to HOME page')
    # index=timmer(index) #index=wrapper
    # index() #wrapper()                        @timmer等于这两步
    index()
    home()
    
    可以加多个装饰器,计算顺序是自下而上,自上而下运行
    装饰器修订版本
    import time
    import random
    #装饰器
    def timmer(func):
        def wrapper(*args,**kwargs):
            start_time=time.time()
            res=func(*args,**kwargs)
            stop_time=time.time()
            print('run time is %s' %(stop_time-start_time))
            return res
        return wrapper
    #被装饰函数
    @timmer
    def index():
        time.sleep(random.randrange(1,5))
        print('welecome to index page')
    res1=index()
    print(res1)
    

      

  • 相关阅读:
    spring boot(二)web综合开发
    spring boot(一)入门
    shiro中单点登录
    shiro中SSL
    shiro中记住我功能
    spring中集成shiro
    OpenResty
    源代码安全审计
    Mycat读写分离 + 主从复制(Gtid)
    关于ansbile
  • 原文地址:https://www.cnblogs.com/gpd-Amos/p/7788983.html
Copyright © 2011-2022 走看看