• 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'
  • 相关阅读:
    linux freopen函数
    进程的环境变量environ
    ls -l 和du 的区别
    Python时间,日期,时间戳之间转换
    Web 服务器压力测试实例详解
    装numpy 环境:python3.4+ windows7 +64位系统
    在Windows Python3.4 上安装NumPy、Matplotlib、SciPy和IPython
    apache 自带的ab.exe 测试网站的并发量(网站压力测试)
    成员如何关注微信企业号?
    微信企业号通讯录有什么用?
  • 原文地址:https://www.cnblogs.com/zhangtengccie/p/10303666.html
Copyright © 2020-2023  润新知