day17 python作业
一:编写函数,(函数执行的时间用time.sleep(n)
模拟)
二:编写装饰器,为函数加上统计时间的功能
def outer():
import time
import functools
def wrapper(func):
@functools.wraps(func)
def inner():
start_time = time.time()
func()
stop_time = time.time()
print('%s:函数的执行时间是:%s' % (func.__name__, (stop_time - start_time)))
return inner
@wrapper
def execute_time():
"""
统计函数时间
:return:
"""
time.sleep(0.8)
print('这是执行函数')
execute_time()
print(execute_time.__name__)
print(help(execute_time))
三:编写装饰器,为函数加上认证的功能
login_flag = False
def auth(fla):
def login_auth(func):
def inner(*args, **kwargs):
if fla:
func(*args, **kwargs)
else:
return print('先登录')
return inner
return login_auth
@auth(login_flag)
def home():
"""home"""
print('这是首页')
home()
四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')
转成字典格式
五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录
import time
s = 0
def wrapper(func):
stay_time = 6
def inner(*args, **kwargs):
start_time = time.time()
res = func(*args, **kwargs)
stop_time = time.time()
global s
s += stop_time - start_time
if s >= stay_time:
print(s)
print('登陆超时需要重新登陆')
login()
s = 0
else:
print(s)
return inner
@wrapper
def f1():
time.sleep(3)
print('这是f1')
@wrapper
def f2():
print('这是f2')
@wrapper
def login():
name = input('输入账号:')
pwd = input('输入密码:')
if name == 'alex' and pwd == '123':
print('登陆成功')
else:
print('user or pwd error')
login()
f1()
f2()