• 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)
  • 相关阅读:
    汇编笔记
    PHP笔记——SOAP
    Eclipse 插件资源地址记录
    使用SetWindowLong修改窗口样式
    C++ builder 剪贴板Clipboard使用
    c++ builder 实现右键选择节点实现方式
    c++ builder 使listview获得焦点并选择第一个节点
    c++ builder 2009 启用codeguard 检测内存泄漏
    c++ builder 2009如何生成独立运行exe
    WPF编程学习——样式
  • 原文地址:https://www.cnblogs.com/Murraya/p/10699926.html
Copyright © 2020-2023  润新知