• python--装饰器初阶


    # 装饰器形成的过程 : 最简单的装饰器 有返回值的 有一个参数 万能参数
    # 装饰器的作用
    # 原则 :开放封闭原则
    # 语法糖 :@
    # 装饰器的固定模式
    
    
    
    import time
    # print(time.time()) # 获取当前时间
    # time.sleep(10)  #让程序在执行到这个位置的时候停一会儿
    
    
    # def timmer(f):    #装饰器函数
    #     def inner():
    #         start = time.time()
    #         ret = f()       #被装饰的函数
    #         end = time.time()
    #         print(end - start)
    #         return ret
    #     return inner
    #
    # @timmer         #语法糖 @装饰器函数名
    # def func():     #被装饰的函数
    #     time.sleep(0.01)
    #     print('老板好同事好大家好')
    #     return '新年好'
    # # func = timmer(func)
    # ret = func()   #inner()
    # print(ret)
    # 装饰器的作用 —— 不想修改函数的调用方式 但是还想在原来的函数前后添加功能
    # timmer就是一个装饰器函数,只是对一个函数 有一些装饰作用
    
    # 原则: 开放封闭原则
    #   开放 : 对扩展是开放的
    #   封闭 : 对修改是封闭的
    
    # 封版
    
    # def outer():
    #     def inner():
    #         return 'inner'
    #     inner()
    #
    # outer()
    
    #装饰带参数函数的装饰器
    # def timmer(f):    #装饰器函数
    #     def inner(*args,**kwargs):
    #         #(1,2) /(1)
    #         start = time.time()
    #         ret = f(*args,**kwargs)  #f(1,2)       #被装饰的函数
    #         end = time.time()
    #         print(end - start)
    #         return ret
    #     return inner
    #
    # @timmer         #语法糖 @装饰器函数名
    # def func(a,b):     #被装饰的函数
    #     time.sleep(0.01)
    #     print('老板好同事好大家好',a,b)
    #     return '新年好'
    #
    # @timmer         #语法糖 @装饰器函数名
    # def func1(a):     #被装饰的函数
    #     time.sleep(0.01)
    #     print('老板好同事好大家好',a)
    #     return '新年好'
    # # func = timmer(func)
    # ret = func(1,2)   #inner()
    # ret = func(1,b = 2)   #inner()
    # print(ret)
    
    # def wrapper(f):    #装饰器函数,f是被装饰的函数
    #     def inner(*args,**kwargs):
    #         '''在被装饰函数之前要做的事'''
    #         ret = f(*args,**kwargs)    #被装饰的函数
    #         '''在被装饰函数之后要做的事'''
    #         return ret
    #     return inner
    #
    # @wrapper         #语法糖 @装饰器函数名
    # def func(a,b):     #被装饰的函数
    #     time.sleep(0.01)
    #     print('老板好同事好大家好',a,b)
    #     return '新年好'
    
    # def wrapper():
    #     def inner():
    #         pass
    #     return inner
    
    def wrapper(func):   #qqxing
        def inner(*args,**kwargs):
            ret = func(*args,**kwargs)   #被装饰的函数
            return ret
        return inner
    
    @wrapper        #qqxing = wrapper(qqxing)
    def qqxing():
        print(123)
    
    ret = qqxing()   #inner
    
    #
    # 讲解元旦作业 扩展装饰器
  • 相关阅读:
    高等软工第三次作业——设计也可以按图索骥
    高等软工第二次作业-从需求分析看软件开发的挑战
    高等软工第一次作业——期望与笃信
    【ACM-ICPC 2018 徐州赛区网络预赛】D.Easy Math 杜教筛
    【HDU 6428】Calculate 莫比乌斯反演+线性筛
    【BZOJ 4199】[Noi2015]品酒大会 后缀自动机+DP
    【BZOJ 3238】差异 后缀自动机+树形DP
    【Codeforces Round #466】E. Cashback DP+ST表
    【BZOJ 4709】柠檬 斜率优化dp+单调栈
    Hello Tornado
  • 原文地址:https://www.cnblogs.com/jsit-dj-it/p/11266815.html
Copyright © 2020-2023  润新知