zoukankan      html  css  js  c++  java
  • python装饰器作业

    1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),
    要求登录成功一次,后续的函数都无需再输入用户名和密码

    # FALG = False
    # def login(user,passwprd):
    #     with open('admin',mode='r',encoding='utf-8') as f:
    #         if f.readline().strip()== user and f.readline().strip() == passwprd:
    #             return True
    #         return False
    # def wrapper(func):
    #     def inner(*args,**kwargs):
    #         global FALG
    #         if FALG:
    #             ret = func(*args,**kwargs)
    #         else:
    #             user = input("输入用户名")
    #             password = input("输入密码")
    #             if login(user,password):
    #                 print('登录成功')
    #                 ret = func(*args, **kwargs)
    #                 FALG =True
    #             else :
    #                 print('登录失败')
    #                 return
    #         return ret
    #     return inner
    # @wrapper
    # def shop_add():
    #     print('增加一个商品')
    # @wrapper
    # def shop_del():
    #     print('删除一件商品')
    # shop_add()
    # shop_del()
    # shop_del()
    # shop_del()

    2.编写装饰器,为多个函数加上记录调用功能,要求每次调用都将被调用的函数名写入文件

    # def warpper(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
    #
    # @warpper
    # def shop_add():
    #     print('增加一个商品')
    # @warpper
    # def shop_del():
    #     print('删除一件商品')
    # shop_add()
    # shop_del()
    # shop_del()
    # shop_del()

    3.编写下载网页内容函数,要求用户传入url,函数返回下载页的结果,并且编写装饰器。

    具体要求:实现下载的页面存放文件中,如果文件中有值,就从文件中读取内容,否则下载至文件中。

    # import os
    # from urllib.request import urlopen
    # def cache(func):
    #     def inner(*args,**kwargs):
    #         if os.path.getsize('cache'):
    #             with open('cache',mode='rb') as f:
    #                 return f.read()
    #         ret =  func(*args,**kwargs)
    #         with open('cache',mode='wb') as f:
    #             f.write('******'.encode('utf-8')+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)
  • 相关阅读:
    Java IO编程中的几个概念
    java强转与继承关系的加深理解:object[]的数组无法强转为String[]的数组
    java反射机制获取对象中父类属性对象
    intealij idea中报错:Error during artifact deployment. See server log for details
    自定义数据属性
    字符集属性
    HTMLDocument的变化
    动态添加对象子对象,防止命名冲突
    焦点管理
    HTML5与相关类的扩充
  • 原文地址:https://www.cnblogs.com/aizh/p/11101592.html
Copyright © 2011-2022 走看看