• 函数的有用信息


    获取有用信息

    from functools import wraps 调用

    __name__      显示函数名

    __doc__          显示函数的有用信息     

    from functools import wraps
    
    def wrapper(f):
        @wraps(f)
        def inner(*args, **kwargs):
            """执行函数之前的操作"""
            ret = f(*args, **kwargs)
            """执行函数之后的操作"""
            return ret
        return inner
    
    @wrapper
    def login(username, password):
        """
        此函数需要用户名,密码两个参数,完成的是登录的功能。
        :return: True 登录成功。 False登录失败。
        """
        a = 2
        c = 4
        print('登录成功...')
        return True
    
    print(login.__name__)
    print(login.__doc__)

    带参数的装饰器

    import time
    
    def timer_out(flag1):  #falg1 = flag
        def timer(f):
            def inner(*args, **kwargs):
                if flag1:
                    start_time = time.time()
                    time.sleep(0.3)
                    ret = f(*args, **kwargs)
                    end_time = time.time()
                    print('执行效率%s' % (end_time-start_time))
                    return ret
                else:
                    ret = f(*args, **kwargs)
                    return ret
            return inner
        return timer
    
    flag = False
    
    @timer_out(flag)  # 1,步 timer_out(flag) == timer 2,@与timer结合,变成你熟悉的装饰器 @timer
    def func1():
        print(111)
    
    
    @timer_out(flag)
    def func2():
        print(222)
    
    
    @timer_out(flag)
    def func3():
        print(333)
    
    func1()
    func2()
    func3()

    多个装饰器装饰一个函数

    def wrapper1(func): # func = f函数名
        def inner1():
            print('wrapper1 ,before func')  # 2
            func()
            print('wrapper1 ,after func')  # 4
        return inner1
    
    
    def wrapper2(func):  # func = inner1
        def inner2():
            print('wrapper2 ,before func')  # 1
            func()  # inner1()
            print('wrapper2 ,after func')  # 5
        return inner2
    
    @wrapper2  # f = wrapper2(f) 里面的f新变量 = inner1 外面的f最新变量 = inner2
    @wrapper1  # f = wrapper1(f) 里面的f函数名  外面的f新变量=inner1
    def f():
        print('in f')  # 3
  • 相关阅读:
    【nginx】常见的陷阱和错误
    linux配置文件的一些调优
    关于防刷票的一些问题
    关于nginx的限速模块
    使用Javascript监控前端相关数据
    【mysql】关于Index Condition Pushdown特性
    【mysql】关于临时表
    堆和栈的区别(转过无数次的文章)
    深入PHP内核之in_array
    【mysql】索引的优化
  • 原文地址:https://www.cnblogs.com/luchenhui/p/9041599.html
Copyright © 2020-2023  润新知