装饰器2_根据认证来源判断用户和计算登录时间

import time

def timmer(func):
    def wrapper(*args,**kwargs):
        print("----->from timmer_wrapper")
        start_time = time.time()
        reg = func(*args,**kwargs)
        stop_time = time.time()
        run_time = stop_time - start_time
        print('run time is %s' % run_time)
        return reg
    return  wrapper

login_user={'user':None,'status':False}
def auth(driver = 'file'):
    def auth2(func):
        def wrapper(*args,**kwargs):
            print("---->from auth_wrapper")
            if driver == 'file':
                if login_user['user'] and login_user['status']:
                    reg = func(*args,**kwargs)
                    return reg
                else:
                    name = input("输入姓名:")
                    password = input("输入密码")
                    if name == 'wangkc' and password == '123123':
                        login_user['user'] = name
                        login_user['status'] = True
                        reg = func(*args,**kwargs)
                        return reg
                    else:
                        print("账号或密码错误")
            elif driver == 'ldap':
                pass
            elif driver == 'MySQL':
                pass
            else:
                print("==========>未知的认证来源")
        return wrapper
    return auth2

@auth()
@timmer
def index():
    time.sleep(2)
    print('hello world')


index()

  

原文地址:https://www.cnblogs.com/wangkc/p/6916481.html