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


原文地址:https://www.cnblogs.com/x945669/p/12556106.html