• 3.23作业


    # 一:编写函数,(函数执行的时间用time.sleep(n)模拟)
    # import time
    # def index(x,y) :
    # time.sleep(3)
    # print('index %s %s' %(x,y))

    # 二:编写装饰器,为函数加上统计时间的功能
    # def timmer(func):
    # def wrapper(*args, **kwargs):
    # start = time.time()
    # res = func(*args, **kwargs)
    # stop = time.time()
    # print(stop - start)
    # return res
    # return wrapper


    # 三:编写装饰器,为函数加上认证的功能
    # def auth(func):
    # def wrapper(*args,**kwargs):
    # name=input('your name>>: ').strip()
    # pwd=input('your password>>: ').strip()
    # if name == 'egon' and pwd == '123':
    # res=func(*args,**kwargs)
    # return res
    # else:
    # print('账号密码错误')
    # return wrapper
    #
    # import time
    # @auth
    # def index(x,y) :
    # time.sleep(3)
    # print('index %s %s' %(x,y))
    #
    # index(1,2)
    # #
    # 四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
    # 注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式

    # login_user={"name":None}
    # dic={}
    # def auth(func):
    # def wrapper(*args,**kwargs):
    # with open('db.txt','r',encoding='utf-8')as f:
    # for line in f:
    # dic=eval(line.strip())
    # if login_user.get("name") :
    # res = func(*args, **kwargs)
    # return res
    # else:
    # inp_name=input('请输入用户名:')
    # inp_pwd=input('请输入密码:')
    # if inp_name ==dic['name'] and inp_pwd== dic['password']:
    # login_user['name']=inp_name
    # res=func(*args,**kwargs)
    # return res
    # return wrapper
    #
    #
    # import time
    # @auth
    # def index(x,y) :
    # time.sleep(3)
    # print('index %s %s' %(x,y))
    #
    # index(1,2)



    # 五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录
    import time
    login_user={"name":None}
    start=time.time()
    dic={}
    def auth(func):
    def wrapper(*args,**kwargs):
    with open('db.txt','r',encoding='utf-8')as f:
    for line in f:
    dic=eval(line.strip())
    if login_user.get("name") :
    res = func(*args, **kwargs)
    return res
    else:
    inp_name=input('请输入用户名:')
    inp_pwd=input('请输入密码:')
    if inp_name ==dic['name'] and inp_pwd== dic['password']:
    login_user['name']=inp_name
    res=func(*args,**kwargs)
    stop=time.time()
    lock_time=stop-start
    if lock_time >30:
    inp_name = input('请输入用户名:')
    inp_pwd = input('请输入密码:')
    if inp_name == dic['name'] and inp_pwd == dic['password']:
    res = func(*args, **kwargs)
    return res
    else:
    return res
    return wrapper


    import time
    @auth
    def index(x,y) :
    time.sleep(3)
    print('index %s %s' %(x,y))

    index(1,2)






    #
    # 六:选做题
    # 思考题(选做),叠加多个装饰器,加载顺序与运行顺序,可以将上述实现的装饰器叠加起来自己验证一下
    # @deco1 # index=deco1(deco2.wrapper的内存地址)
    # @deco2 # deco2.wrapper的内存地址=deco2(deco3.wrapper的内存地址)
    # @deco3 # deco3.wrapper的内存地址=deco3(index)
    # def index():
    # pass
  • 相关阅读:
    JSP 静态文件路径配置
    java 类拷贝
    spring security demo
    NYOJ-1057-寻找最大数(三)
    nyoj-1036-非洲小孩
    POJ-3617-Best Cow Line
    NYOJ-891-找点
    大平神出的一道双向链表题
    ZOJ-1360 || POJ-1328——Radar Installation
    POJ-2386-Lake Counting
  • 原文地址:https://www.cnblogs.com/chenyoupan/p/12555227.html
Copyright © 2020-2023  润新知