• 作业3月23号


    一:编写函数,(函数执行的时间用time.sleep(n)模拟)

    二:编写装饰器,为函数加上统计时间的功能

    import time
    def timmer(func):
        def wrapper(*args,**kwargs):
            start=time.time()
            res=func(*args,**kwargs)
            stop=time.time()
            print(stop - start)
            return res

    三:编写装饰器,为函数加上认证的功能

    四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
    注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式

    五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录

    import time
    login_user = None
    login_time = None
    
    def check_session(func):
        time_out = 4
        def wrapper(*args,**kwargs):
            global login_user,login_time
            res = func(*args,**kwargs)
            end = time.time()
            if end - login_time > time_out:
                login_user = None
                print('登陆超时')
                login_time = None
            return res
        return wrapper
    
    
    
    def check_login(func):
        def wrapper(*args, **kwargs):
            global login_user,login_time
            if login_user:
                func(*args, **kwargs)
            else:
                ipt_account = input('输入账号:').strip()
                ipt_pwd = input('输入密码:').strip()
                with open('db.txt', mode='rt', encoding='utf-8') as f:
                    for i in f:
                        if [ipt_account, ipt_pwd] == i.strip('
    ').split(':'):
                            login_user = ipt_account
                            print('登陆成功,现在可以使用功能')
                            login_time = time.time()
                            break
                    else:
                        print('账户名或密码错误,无法使用功能')
    
        return wrapper
    
    
    @check_session
    @check_login
    def func1(cmd):
        print('func1', cmd)
    
    
    
    @check_session
    @check_login
    def func2(cmd):
        print('func2', cmd)
    
    
    menu = {
        '1': ['func1', func1],
        '2': ['func2', func2],
        '3': ['exit', exit]
    }
    
    while True:
        for i in menu:
            print(i, menu[i][0])
    
        cmd = input('cmd:').strip()
        menu[cmd][1](cmd)
  • 相关阅读:
    hadoop 环境配置
    批量生成不同尺寸的图片
    如何生成publish windows app 用到的 pfx 文件
    MVC项目用Windsor注入
    UWP textbox 只能输入数字
    power shell upload file to azure storage
    Checkbox can't checked
    安装部署 Goaccess
    阿里云OSS的Bucket容量大小采集
    1. Nagios和 NagiosQL安装及配置
  • 原文地址:https://www.cnblogs.com/jingpeng/p/12555482.html
Copyright © 2020-2023  润新知