• 函数的有用信息,装饰器 day12


    一 函数的有用信息

    本函数的功能:绘图功能,实时接收数据并绘图.
    :return: 绘图需要的数据,返回给前端某标签
    
    
    def f1():
        '''
        本函数的功能:绘图功能,实时接收数据并绘图.
        :return: 绘图需要的数据,返回给前端某标签
        '''
        print(f1.__doc__)
        print(f1.__name__)
        print(666)
    
    print(f1.__doc__)  #获取函数的说明信息
    print(f1.__name__)  # 获取函数的名字
    f1()
    
    
    from functools import wraps
    def wrapper(func):
        @wraps(func)
        def inner(*args,**kwargs):
            '''执行函数前进行的操作'''
            ret = func(*args,**kwargs)
            '''执行函数后进行的操作'''
            return ret
        return inner
    
    @wrapper
    def f1():
        '''
        本函数的功能:绘图功能,实时接收数据并绘图.
        :return: 绘图需要的数据,返回给前端某标签
        '''
        print(f1.__doc__)
        print(f1.__name__)
    f1()


     
    
    
    
    
    
    def wrapper(func):
        def inner(*args,**kwargs):
            '''执行函数前进行的操作'''
            ret = func(*args,**kwargs)
            '''执行函数后进行的操作'''
            return ret
        return inner
    @wrapper # f1 = wrapper(f1)
    def f1(a,b,c,d):  # 接收函数的时候,* 聚合.
        print(a,b)
        # print(args) # (1,2,3,4)
    f1(1,2,2,3)
    f1(*[1,2,3,4])  # 执行函数时,加个*打散


    
    

    二 带参数的装饰器 

    import time
    flag = False
    def timmer_out(f):
        def timmer(func):
            def inner(*args,**kwargs):
                '''执行函数前操作'''
                if f:
                    start_time = time.time()
                    time.sleep(0.3)
                    ret = func(*args,**kwargs)
                    '''执行函数后操作'''
                    end_time = time.time()
                    print('执行效率%s'%(end_time - start_time))
                    return ret
                else:
                    ret = func(*args,**kwargs)
                    return ret
            return inner
        return timmer
    
    @timmer_out(flag)  # 1, timmer_out(flag)  返回 timmer  --->
    def f1():         # 2,  @timmer 就是你认识的装饰器 f1 = timmer(f1)
        print(666)
    @timmer_out(flag)  # f2 = timmer(f2)
    def f2():
        print(777)
    f1()
    f2()

     
    def wrapper1(func):  # func = f
        def inner1():
            print('wrapper1 ,before func')
            func()
            print('wrapper1 ,after func')
        return inner1
    
    def wrapper2(func):  # func = inner1
        def inner2():
            print('wrapper2 ,before func')
            func()
            print('wrapper2 ,after func')
        return inner2
    
    @wrapper2     # f = wrapper2(f)  里面的f == inner1   外面的f = inner2
    @wrapper1     # f = wrapper1(f)  返回inner1    f = inner1
    def f():
        print('in f')
    f()  # inner2()

    
    
    
    
    
    def wrapper1(func):  # func = f
        def inner1():
            print('wrapper1 ,before func')
            func()
            print('wrapper1 ,after func')
        return inner1
    
    def wrapper2(func):  # func = inner1
        def inner2():
            print('wrapper2 ,before func')
            func()
            print('wrapper2 ,after func')
        return inner2
    
    @wrapper2     # f = wrapper2(f)  里面的f == inner1   外面的f = inner2
    @wrapper1     # f = wrapper1(f)  返回inner1    f = inner1
    def f():
        print('in f')
    f()  # inner2()

    
    
    



  • 相关阅读:
    Webservice里使用Linq遇到ToList输出泛型而产生循环引用错误的解决办法(转)
    JavaScript 面向对象程序设计(转)
    SilverLight中的基本图形(转)
    JQuery常用方法一览(转)
    常用的JS(转)
    简单的java socket 服务器端
    Eclipse RCP 之国际化(转载)
    使用Eclipse构建GeoTools项目
    java.lang.UnsatisfiedLinkError: no XX in java.library.path解决方法
    sqlite第三方类库:FMDB使用(转载)
  • 原文地址:https://www.cnblogs.com/chongdongxiaoyu/p/8419256.html
Copyright © 2020-2023  润新知