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'
  • 相关阅读:
    maven(一)maven自带的插件
    Faster RCNN 的细节补充
    leetcode 287
    一句话介绍python线程、进程和协程
    C++中指针和引用的区别
    C++ operator new和new operator的区别
    Faster RCNN算法训练代码解析(3)
    Faster RCNN算法训练代码解析(2)
    Faster RCNN算法训练代码解析(1)
    Faster RCNN算法demo代码解析
  • 原文地址:https://www.cnblogs.com/zhangtengccie/p/10303666.html
Copyright © 2011-2022 走看看