• 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输入输出
    CSS选择器(三)
    CSS选择器(二)
    CSS选择器(一)
    3.31课·········插入百度地图、视频、音频
    3.30课·········Marquee标签
    3.29课·········表单验证和事件
    3.27课·········悬浮动态分层导航与隐藏导航
    3.26课·········window.document对象
    3.25课·········JavaScript的DOM操作
  • 原文地址:https://www.cnblogs.com/Murraya/p/10699926.html
Copyright © 2020-2023  润新知