zoukankan      html  css  js  c++  java
  • 函数的有用信息

    获取有用信息

    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
  • 相关阅读:
    Mysql TEXT类型长度
    php中的||和or的区别 优先级
    常用的排序算法的时间复杂度和空间复杂度
    ThinkPHP 多应用多模块建立方式
    phpcms v9 后台添加修改页面空白页问题解决方法
    linux中nginx重定向方法总结
    Nginx的主要配置参数说明
    Apache多网站虚拟目录域名
    xampp命令
    (转载)处理SQL解析失败导致share pool 的争用
  • 原文地址:https://www.cnblogs.com/luchenhui/p/9041599.html
Copyright © 2011-2022 走看看