• 作业 3月24日


    # 作业:
    # 1、编写课上讲解的有参装饰器准备明天默写

    def auth(db_type):
    def otter(func):
    def wrapper(*args,**kwargs):
    username = input("your name:").strip()
    password = input("your pwd:").strip()

    if db_type == "file":
    print("基于文件的登陆")

    if username == "Anna" and password == "123":
    res = func(*args,**kwargs)
    return res
    else:
    print("password wrong")
    elif db_type == 'file':
    print("文件file")
    elif db_type == "mysql":
    print("数据库mysql")
    elif db_type == "ldap":
    print("基于ldap")
    else:
    print("wrong")
    return wrapper
    return otter


    @auth(db_type="file")
    def index(x,y):
    print("index %s %s"%(x,y))

    @auth(db_type="mysql")
    def home(name):
    print("home>>>"%name)

    @auth(db_type="ladp")
    def transfer():
    print("transfer>>>"%transfer)


    index(11,22)
    home("Anna")
    transfer()

    # 2:还记得我们用函数对象的概念,制作一个函数字典的操作吗,来来来,我们有更高大上的做法,在文件开头声明一个空字典,
    # 然后在每个函数前加上装饰器,完成自动添加到字典的操作
    d = {}
    key = 0
    def add_dict(func):
    def wrapper(*args,**kwargs):
    global key
    d["{}".format(key)] = func
    key += 1
    return wrapper

    @add_dict
    def index(x,y):
    print("index %s %s"%(x,y))
    @add_dict
    def home():
    pass
    index(11,22)


    # 3、 编写日志装饰器,实现功能如:一旦函数f1执行,则将消息2017-07-21 11:12:11 f1 run写入到日志文件中,日志文件路径可以指定
    # 注意:时间格式的获取
    import time
    time.strftime('%Y-%m-%d %X')
    import time

    from functools import wraps
    src = None
    def access_log(func):
    @wraps(func)
    def wrapper(*args,**kwargs):
    global src
    if not src:
    inp_src = input("请指定保存路径:").strip()
    src = inp_src
    func_name = func()
    if func_name:
    with open(r"{}access.log".format(src),'a',encoding="utf-8") as f:
    f.write("{} {}run ".format(time.strftime("%Y-%m_%d %x"),func_name))
    return wrapper

    @access_log
    def test1():
    time.sleep(1)
    print("test1执行完毕")
    return test1.__name__

    @access_log
    def test2():
    time.sleep(1)
    return test2.__name__
    @access_log
    def test3():
    time.sleep(1)
    return test3.__name__

    test1()
    test2()
    test3()
    # 4、基于迭代器的方式,用while循环迭代取值字符串、列表、元组、字典、集合、文件对象
    def wrpper(inp_type):
    print("this is {}".format(type(inp_type)))
    while True:
    try:
    print(next(inp_type))
    except StopIteration:
    break
    wrpper("123".__iter__())
    wrpper([1,2,3].__iter__())
    wrpper((1,2,3).__iter__())
    wrpper({"k1":1,"k2":2}.__iter__())
    wrpper({1,2,3}.__iter__())
    with open('access.log',"r",encoding="utf-8") as f:
    wrpper(f.__iter__())

    # 5、自定义迭代器实现range功能
    def my_range(start,stop,step=1):
    while start < stop:
    start += step
    yield start
    for i in my_range(1,10,2):
    print(i)


    # ====================本周选做作业如下====================
    # 编写小说阅读程序实现下属功能
    # # 一:程序运行开始时显示
    # 0 账号注册
    # 1 充值功能
    # 2 阅读小说



    # # 二: 针对文件db.txt,内容格式为:"用户名:密码:金额",完成下述功能
    # 2.1、账号注册
    # 2.2、充值功能


    # # 三:文件story_class.txt存放类别与小说文件路径,如下,读出来后可用eval反解出字典
    # {"0":{"0":["倚天屠狗记.txt",3],"1":["沙雕英雄转.txt",10]},"1":{"0":["令人羞耻的爱.txt",6],"1":["二狗的妻子与大草原的故事.txt",5]},}
    #
    # 3.1、用户登录成功后显示如下内容,根据用户选择,显示对应品类的小说编号、小说名字、以及小说的价格
    # """
    # 0 玄幻武侠
    # 1 都市爱情
    # 2 高效养猪36技
    # """
    #
    # 3.2、用户输入具体的小说编号,提示是否付费,用户输入y确定后,扣费并显示小说内容,如果余额不足则提示余额不足
    #
    # # 四:为功能2.2、3.1、3.2编写认证功能装饰器,要求必须登录后才能执行操作
    #
    # # 五:为功能2.2、3.2编写记录日志的装饰器,日志格式为:"时间 用户名 操作(充值or消费) 金额"
    #
    #
    #
    # # 附加:
    # # 可以拓展作者模块,作者可以上传自己的作品
  • 相关阅读:
    【转载】浏览器兼容性测试
    【转载】移动端
    【转载】Postman学习之【压力测试】
    【转载】如何进行bug总结
    【转载】按键精灵对安卓APP进行自动化界面点击测试
    【转载】Selenium+Python自动化测试环境搭建和搭建过程遇到的问题解决
    【转载】fiddler软件测试——Fiddler抓取https设置详解(图文)
    【转载】服务器性能测试工具 ---- nmon
    python中的一些好用的库
    python操作excel表格相关的库
  • 原文地址:https://www.cnblogs.com/acnjanna2019/p/12561363.html
Copyright © 2020-2023  润新知