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)
  • 相关阅读:
    cenos7 安装samba
    Cenos7 学习笔记
    mysql学习笔记(一)
    Qt 程序打包发布总结 转
    主机名由localhost变成bogon是怎么回事,怎样变回localhost这个名字?
    Heap Size 与 Stack Size
    数据字节对齐案例
    C语言进阶日志二
    位带操作
    Stm32高级定时器(转自:luowei_memory)
  • 原文地址:https://www.cnblogs.com/aizh/p/11101592.html
Copyright © 2011-2022 走看看