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'
  • 相关阅读:
    我的PC必装软件
    NumPy数值计算(1)
    英文标题首字母大写规则
    学渣笔记之矩阵的导数与迹
    测试
    (英文排版测试)Lorem Ipsum
    XeLaTeX插入GB/T 7714-2005规范的参考文献方法
    linux-centos7 下 php 扩展的 编译与安装,以 mysqli 为例
    linux-centos7-vmware 实现与虚拟机共享文件夹宿主机磁盘文件
    linux-centos7 下安装 php-nginx 服务器
  • 原文地址:https://www.cnblogs.com/zhangtengccie/p/10303666.html
Copyright © 2011-2022 走看看