• 函数的有用信息


    获取有用信息

    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
  • 相关阅读:
    jquery mobile左右滑动切换页面
    用phonegap和jquery-mobile写android应用
    javascript配置ckfinder的路径
    HTML5中表单验证的8种方法
    select标签中的选项分组
    c# 冒号:C#中两个冒号(::)的作用
    jquery validate
    【C#学习笔记】检测进程是否存在并关闭
    【C#学习笔记】载入图片并居中
    【C#学习笔记】鼠标控制
  • 原文地址:https://www.cnblogs.com/luchenhui/p/9041599.html
Copyright © 2020-2023  润新知