第2模块第1章装饰器练习题

一:编写3个函数,每个函数执行的时间是不一样的,

提示:可以使用time.sleep(2),让程序sleep 2s或更多,

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

提示:在函数开始执行时加上start=time.time()就可纪录当前执行的时间戳,函数执行结束后在time.time() - start就可以拿到执行所用时间


import time

def sum_time(fun):

    def inner():

        start = time.time()

        fun()

        print(time.time()-start)

    return inner


@sum_time

def fun1():

    time.sleep(1)


@sum_time

def fun2():

    time.sleep(1.5)


@sum_time

def fun3():

    time.sleep(2)


fun1()

fun2()

fun3()


三:编写装饰器,为函数加上认证的功能,即要求认证成功后才能执行函数

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

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


import time

status =False

def login(fun):

def inner():

    global status

    if status ==False:

        with open("装饰器.txt","rb")as fil:

            dic =eval(fil.read())

        while True:

            username =input("name:")

            password =input("password:")

            if dic["name"] == usernameand dic["password"] == password:

                status =True

                break

            else:

                print("密码输入错误")

        fun()

    else:

        fun()

    return inner


@login

def fun1():

    time.sleep(1)

    print("程序1执行完毕")


@login

def fun2():

    time.sleep(1.5)

    print("程序2执行完毕")


@login

def fun3():

    time.sleep(2)

    print("程序3执行完毕")


fun1()

fun2()

fun3()

你可能感兴趣的:(第2模块第1章装饰器练习题)