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

Posted 虫洞小鳗鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的有用信息,装饰器 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()


 




 

以上是关于函数的有用信息,装饰器 day12的主要内容,如果未能解决你的问题,请参考以下文章

铁乐学Python_day12_装饰器

12.前方高能-装饰器进阶

Python全栈__函数的有用信息带参数的装饰器多个装饰器装饰一个函数

python装饰器内获取函数有用信息方法

day5--装饰器函数的信息打印,迭代器,生成器,列表推导式,内置函数

带参数的装饰器,多个装饰器装饰一个函数,函数的有用信息。