• day11 作业


    day11 作业
    # 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),
    # 要求登录成功一次,后续的函数都无需再输入用户名和密码
    from res import *
    Flag = False
    def login(func):
    def inner(*args,**kwargs):
    global Flag
    '''#登录程序'''
    if Flag:
    ret =func(*args,**kwargs)
    return ret
    else:
    _username = input("input username: ").strip()
    _password = input("input password: ").strip()
    if _username == username and _password == password:
    Flag = True
    ret = func(*args, **kwargs)
    return ret
    else:
    print('登录失败')
    return inner

    @login
    def read():
    print("读一本书")
    @login
    def write():
    print("写一篇文章")

    read()
    write()'''
    #2.编写装饰器,为多个函数加上记录调用功能,
    # 要求每次调用函数都将被调用的函数名称写入文件
    def wrapper(func):
    def innner(*args,**kwargs):
    with open("res","a",encoding="utf-8") as f:
    f.write(func.__name__+' ')
    ret = func(*args,**kwargs)
    return ret
    return innner
    @wrapper
    def fan():
    print('fan')
    @wrapper
    def yzx():
    print("yzx")
    fan()
    yzx()

    # 进阶作业(选做):
    # 1.编写下载网页内容的函数,要求功能是:用户传入一个url,
    # 函数返回下载页面的结果
    # 2.为题目1编写装饰器,实现缓存网页内容的功能:
    # 具体:实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),
    # 就优先从文件中读取网页内容,
    # 否则,就去下载,然后存到文件中
    import os
    from urllib.request import urlopen
    def cache(func):
    def inner(*args, **kwargs):
    if os.path.getsize('web_cache'):
    with open('web_cache','rb') as f:
    return f.read()
    ret = func(*args,**kwargs)
    with open('web_cache','wb') as f:
    f.write(b'********'+ret)
    return ret
    return inner
    @cache
    def get(url):
    code = urlopen(url).read()
    return code

    ret = get('http://www.baidu.com')
    print(ret)
    ret = get('http://www.baidu.com')
    print(ret)
    ret = get('http://www.baidu.com')
    print(ret)
  • 相关阅读:
    Python的简单介绍/解释器/变量/变量的数据类型/用户交互及流程控制(if)
    变量
    hello python
    页面默认值显示
    java 获取时间区间
    java Set 中 removeAll 与 addAll
    命名的数据库实例
    linux 打包与解包
    缓存工作原理
    java 格式化日期(转)
  • 原文地址:https://www.cnblogs.com/Murraya/p/10699926.html
Copyright © 2020-2023  润新知