• day4 装饰器



    import random,time
    import sys
    import urllib.request
    import os

    '''一:编写函数,(函数执行的时间是随机的)'''

    # def func():
    # time.sleep(random.randrange(1,3))
    # print(f"此函数{sys._getframe().f_code.co_name}的执行时间为{random.randrange(1,3)}s")
    # func()

    '''二:编写装饰器,为函数加上统计时间的功能'''
    # def Time_get(func):
    # def wrepper():
    # stater=time.time()
    # func()
    # stop=time.time()
    # print((">>>>>>当前函数的统计时间是%s"%(stop-stater)))
    # # return res
    # return wrepper
    # @Time_get
    # def func():
    # time.sleep(2)
    # print(">>>>func")
    # func()

    '''三:编写装饰器,为函数加上认证的功能'''
    # def auth(func):
    # def wrapper(*args,**kwargs):
    # user = input("请输入您的名字")
    # pwd = input("请输入您的密码")
    # if user=="egon" and pwd=="123":
    # print("succes>>>")
    # func(user,*args,**kwargs)
    # # return res
    # else:
    # print("用户名或密码错误")
    # return wrapper
    # @auth
    # def login(user):
    # print("欢迎您的到来%s"%user)
    # login()


    '''
    四:作业4:
    # 编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),
    # 要求登录成功一次,后续的函数都无需再输入用户名和密码
    # 注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式
    '''
    # msg=False
    # def auth(func):
    # def wrapper(*args,**kwargs):
    # global msg
    # if msg:
    # ret=func(*args,**kwargs)
    # retutn ret

    # else:
    # with open("test.txt",mode='rt',encoding="utf-8")as f:
    # for line in f.readlines():
    # dit=eval(line)
    # user = input("请输入您的名字")
    # pwd = input("请输入您的密码")
    # if user== dit["name"] and pwd==dit["password"]:
    # print("succes>>>")
    # ret=func(*args,**kwargs)
    # msg=True
    # return ret
    # print("login error")
    # return wrapper
    # @auth
    # def login(user):
    # print("欢迎您的到来%s"%user)
    # login("egon")
    # @auth
    # def login1(user):
    # print("欢迎您的到来%s"%user)
    # login("egon")
    '''
    作业5:
    编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,
    超过了超时时间,则必须重新登录
    '''
    # msg={"ely":False,"times":None}
    # def auth(func):
    # def wrapper(*args,**kwargs):
    # global msg
    # if msg["ely"] and (time.time()-msg["times"])<5:
    # ret=func(*args,**kwargs)
    # return ret
    # else:
    # with open("test.txt",mode='rt',encoding="utf-8")as f:
    # for line in f.readlines():
    # dit=eval(line)
    # user = input("请输入您的名字")
    # pwd = input("请输入您的密码")
    # if user== dit["name"] and pwd==dit["password"]:
    # print("succes>>>")
    # ret=func(*args,**kwargs)
    # msg["times"] = time.time()
    # msg["ely"]=True
    # return ret
    # print("login error")
    # return wrapper
    # @auth
    # def login(user):
    # print("欢迎您的到来%s"%user)
    # login("egon")
    # time.sleep(6)
    # @auth
    # def login1(user):
    # print("欢迎您的到来%s"%user)
    # login("egon")
    '''
    作业6:
    编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果
    作业7:
    为作业6编写装饰器,实现缓存网页内容的功能:
    具体:实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
    '''
    # def Url_Get(func):
    # def inner(*args,**kwargs):
    # if os.path.getsize("test.txt"):
    # with open("test.txt",mode="rt",encoding="utf-8")as f:
    # f=f.read()
    # return f
    # else:
    # with open('test.txt',mode="wt",encoding="utf-8")as w:
    # ret=func(*args,**kwargs)
    # w.write(ret)
    # return ret,(">>>>>>>>>")
    # return inner
    # @Url_Get
    # def url_get(url):
    # ret=urllib.request.urlopen(url).read()
    # return ret
    # u=url_get("http://www.baidu.com" )
    # print(u)
    #
    '''
    作业8:
    制作一个函数字典的操作,在文件开头声明一个空字典,然后在每个函数前加上装饰器,完成自动添加到字典的操作
    '''
    # from functools import wraps
    # def dit_add(func):
    # # @wraps
    # def wrepper(*args,**kwargs):
    # dit[func.__name__]=func
    # ret=func(*args,**kwargs)
    # return ret
    # return wrepper
    # @dit_add
    # def func1():
    # print("succeed>>>>1")
    # @dit_add
    # def func2():
    # print("succeed>>>>2")
    # dit={}
    # func1()
    # func2()
    # print(dit)

    '''
    作业9:
    编写日志装饰器,实现功能如:一旦函数f1执行,则将消息2017-07-21 11:12:11 f1 run写入到日志文件中,日志文件路径可以指定
    注意:时间格式的获取
    import time
    time.strftime()
    '''
    # def log_add(func):
    # def wrepper(*args,**kwargs):
    # with open("test.txt",mode='a',encoding="utf-8")as w:
    # # w.seek(0,2)
    # ret = func(*args, **kwargs)
    # w.write(ret+" ")
    # return ret
    # return wrepper
    # @log_add
    # def log():
    # tim="run %s 执行了 %s"%(time.strftime('%Y-%m-%d %X'),sys._getframe().f_code.co_name)
    # return tim
    # log()
  • 相关阅读:
    最全的ASP.NET开源CMS汇总
    excel学习range
    多线程写文件异常(正由另一进程使用,因此该进程无法访问该文件)的解决方法
    EXCEL之Range,cells,offset,end用法
    天佑中华
    敏捷测试感悟(之二)
    4月份到上海出差
    《Google API大全:编程·开发·实例》一书将在本周末的GDD(Google开发者大会)上首发
    敏捷测试感悟(之一)
    拿到了TD的3G测试手机
  • 原文地址:https://www.cnblogs.com/ZhiXiaoBbai/p/13457878.html
Copyright © 2020-2023  润新知