zoukankan      html  css  js  c++  java
  • Python9-day11-作业

    # 1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),
    # 要求登录成功一次,后续的函数都无需再输入用户名和密码
    FLAG = False
    def login(func):
        def inner(*args,**kewargs):
            global  FLAG
            if FLAG:
                ret = func(*args,**kewargs)
                return ret
            else:
                username = input('username: ')
                password = input('password: ')
                if username == 'tim' and password == 'cisco':
                    FLAG = True
                    ret = func(*args,**kewargs)
                    return ret
                else:
                        print('登录失败')
    
        return inner
    
    @login
    def shoplist_add():
        print('增加一件物品')
    @login
    def shoplist_del():
        print('删除一件物品')
    
    shoplist_add()
    shoplist_del()
    # 2.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名称写入文件
    def log(func):
        def inner(*args,**kwargs):
            with open('log',mode='a',encoding='utf-8') as f:
                f.write(func.__name__+'
    ')
            ret = func(*args,**kwargs)
            return ret
        return inner
    
    @log        #shoplist_add=log(shoplist_add)
    def shoplist_add():
        print('增加一件物品')
    @log
    def shoplist_del():
        print('删除一件物品')
    
    shoplist_add()
    shoplist_del()
    shoplist_add()
    shoplist_del()
    shoplist_del()
    # 进阶作业(选做):
    # 1.编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果
    # 2.为题目1编写装饰器,实现缓存网页内容的功能:
    # 具体:实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中

    from urllib.request import  urlopen
    import os
    from urllib.request import  urlopen
    def cache(func):
        def inner(*args,**kwargs):
            if os.path.getsize('web_cache'):   #不等于0就会读文件,等于0就会执行写
                with open('web_cache','rb') as f:
                    return f.read()
            ret = func(*args,**kwargs)    #get
            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)
    
    






  • 相关阅读:
    tensorflow 2.0 学习 (十) 拟合与过拟合问题
    tensorflow 2.0 学习 (九) tensorboard可视化功能认识
    tensorflow 2.0 学习 (八) keras模块的认识
    tensorflow 2.0 学习 (七) 反向传播代码逐步实现
    tensorflow 2.0 学习 (六) Himmelblua函数求极值
    tensorflow 2.0 学习 (五)MPG全连接网络训练与测试
    arp协议简单介绍
    Pthread spinlock自旋锁
    线程和进程状态
    内核态(内核空间)和用户态(用户空间)的区别和联系·
  • 原文地址:https://www.cnblogs.com/zhangtengccie/p/10322515.html
Copyright © 2011-2022 走看看