zoukankan      html  css  js  c++  java
  • Python学习————作业

    一:编写函数,(函数执行的时间用time.sleep(n)模拟)

    import time
    
    
    def index(x, y):
        start = time.time()
        time.sleep(3)
        print(f'index:{x, y}')
        stop = time.time()
        print(stop - start)
    

    二:编写装饰器,为函数加上统计时间的功能

    import time
    
    def timmer(func):
        def timmer_start(*args, **kwargs):
            start = time.time()
            func(*args, **kwargs)
            print('开始时间:', start)
            time.sleep(4)
            stop = time.time()
            print('结束时间:', stop)
            print('时间间隔:', stop - start)
        return timmer_start
    
    @timmer
    def timemer_sleep(*args, **kwargs):
        time.sleep(3)
        print()
    timemer_sleep()
    

    三:编写装饰器,为函数加上认证的功能

    import time
    
    
    def login(func):
        def wrapper():
            name = input('用户名: ').strip()
            upass = input('密码').strip()
            if name == 'yan' and upass == '123':
                res = func()
                print('登陆成功')
                return res
            else:
                print('账号或密码不正确')
    
    ​    return wrapper
    
    
    def timmer(func):
        def wrapper():
            start = time.time()
            func()
            stop = time.time()
            print(stop - start)
    
    ​    return wrapper
    
    
    
    @login
    @timmer
    def index():
        time.sleep(3)
        print('欢迎登录')
    
    
    index()
    

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

    注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式

    
    

    五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录

    
    

    六:选做题

    思考题(选做),叠加多个装饰器,加载顺序与运行顺序,可以将上述实现的装饰器叠加起来自己验证一下

    @deco1 # index=deco1(deco2.wrapper的内存地址)

    @deco2 # deco2.wrapper的内存地址=deco2(deco3.wrapper的内存地址)

    @deco3 # deco3.wrapper的内存地址=deco3(index)

    def index():

    pass

    
    
  • 相关阅读:
    Java8 Stream Function
    PLINQ (C#/.Net 4.5.1) vs Stream (JDK/Java 8) Performance
    罗素 尊重 《事实》
    小品 《研发的一天》
    Java8 λ表达式 stream group by max then Option then PlainObject
    这人好像一条狗啊。什么是共识?
    TOGAF TheOpenGroup引领开发厂商中立的开放技术标准和认证
    OpenMP vs. MPI
    BPMN2 online draw tools 在线作图工具
    DecisionCamp 2019, Decision Manager, AI, and the Future
  • 原文地址:https://www.cnblogs.com/x945669/p/12556106.html
Copyright © 2011-2022 走看看