# 一:编写函数,(函数执行的时间用time.sleep(n)模拟)
# 二:编写装饰器,为函数加上统计时间的功能
# 三:编写装饰器,为函数加上认证的功能
import time
def timer(func):
def wrapper(*args,**kwargs):
res = func(*args,**kwargs)
a = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
print(a)
return res
return wrapper
def homer(func):
def wrapper(*args,**kwargs):
name = input('your name>>: ').strip()
pwd = input('your password>>: ').strip()
if name == 'ass' and pwd == '123':
res = func(*args, **kwargs)
print('hello %s'%name,end=' ')
return res
else:
print('账号密码错误')
return wrapper
@timer
@homer
def index():
time.sleep(1)
index()
# 四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
# 注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式
login_user = {'name': None}
def login(func):
def wrapper(*args,**kwargs):
if login_user['name']:
return func(*args, **kwargs)
while True:
inp_name = input('输入账号:').strip()
with open('a.txt', 'rt', encoding='utf-8')as f:
for i in f:
line = i.strip()
print(line)
user_dic = eval(line)
if user_dic['name'] == inp_name:
while True:
inp_pwd = input('输入密码:').strip()
if inp_pwd == user_dic['pwd']:
print('登入成功')
login_user['name'] = inp_name
return func(*args, **kwargs)
else:
print('密码错误')
return wrapper
@login
def a():
print('1')
@login
def b():
print('2')
@login
def c():
print('3')
a()
b()
c()
# 五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录