zoukankan      html  css  js  c++  java
  • Python9-装饰器-day11

    import time
    def timmer(f):   #装饰器函数
        def inner():
            start = time.time()
            ret = f()         #被装饰的函数
            end = time.time()
            print(end-start)
            return ret
        return inner
    @timmer   #魔法糖 @装饰器函数名   ====>func = timmer(func)
    def func():   #被装饰的函数
        time.sleep(0.01)
        print('hahaha')
        return 'good st'
    # func = timmer(func)
    ret = func()
    print(ret)
    

     

    #不想修改函数的调用方式,但是还想在原来的函数前后添加功能
    #timmer就是一个装饰器函数,只对一个函数有一些装饰作用
    #原则: 开放封闭原则
    #开放 :对扩展是开放的
    #封闭 :对修改是封闭的

    #装饰带参数函数的装饰器
    def timmer(f):   #装饰器函数
        def inner(a):
            start = time.time()
            ret = f(a)         #被装饰的函数
            end = time.time()
            print(end-start)
            return ret
        return inner
    @timmer   #魔法糖 @装饰器函数名
    def func(a):   #被装饰的函数
        time.sleep(0.01)
        print('hahaha',a)
        return 'good st'
    # func = timmer(func)
    ret = func(1)
    print(ret)

    多参数

    def timmer(f):   #装饰器函数
        def inner(*args,**kwargs):
            start = time.time()
            ret = f(*args,**kwargs)         #被装饰的函数
            end = time.time()
            print(end - start)
            return ret
        return inner
    
    @timmer   #魔法糖 @装饰器函数名
    def func(a,b):   #被装饰的函数
        time.sleep(0.01)
        print('hahaha',a,b)
        return 'good st'
    
    @timmer   #魔法糖 @装饰器函数名
    def func1(a):   #被装饰的函数
        time.sleep(0.01)
        print('hahaha',a)
        return 'good st'
    
    # func = timmer(func)
    ret = func(1,2)
    ret = func(1,b=2)
    print(ret)

     装饰器定式

    def wapper(f):   #装饰器函数  f是被装饰的函数
        def inner(*args,**kwargs):
            '''在被装饰函数之前要做的事'''
            ret = f(*args,**kwargs)         #被装饰的函数
            '''在被装饰函数之后要做的事'''
            return ret
        return inner
    
    @wapperr   #魔法糖 @装饰器函数名
    def func(a,b):   #被装饰的函数
        time.sleep(0.01)
        print('hahaha',a,b)
        return 'good st'
  • 相关阅读:
    SQLAlchemy教程-第二章-SQL常用查询的ORM写法
    弹性数组
    C++模板
    typedef 函数名
    typedef 函数指针
    备忘录:“#ifdef __cplusplus extern "C" { #endif”的定义
    linux mmap 内存映射
    生成模型与判别模型(转)
    DL反向传播理解
    UFLDL(Unsupervised Feature Learning and Deep Learning)
  • 原文地址:https://www.cnblogs.com/zhangtengccie/p/10303666.html
Copyright © 2011-2022 走看看