# 一:编写函数,(函数执行的时间用time.sleep(n)模拟)
import time
def timeer(x, y):
res = x + y
time.sleep(2)
print("timeer>>>%s:" % res)
timeer(1,2)
# 二:编写装饰器,为函数加上统计时间的功能
import time
def out(func):
def index(*args,**kwargs):
time.sleep(0.3)
start = time.time()
res = func(*args,**kwargs)
stop = time.time()
print(stop - start)
return res
return index
index = outer(index)
index(1,2)
# 三:编写装饰器,为函数加上认证的功能
import time
def out(func):
def wapper(*args,**kwargs):
time.sleep(0.3)
start = time.time()
res = func(*args,**kwargs)
stop = time.time()
print(stop - start)
return res
return wapper
@out
def index(x,y):
time.sleep(0.3)
print("index>>>:%s %s"%(x,y))
index(1,2)
四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),
要求登录成功一次,后续的函数都无需再输入用户名和密码
注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式
def auth(func):
def wapper(*args, **kwargs):
name = input("name>>>:").strip()
password = input("password>>>:").strip()
# password = int(password)
with open("bb.txt", "rt", encoding="utf-8") as file:
for line in file:
user, pwd = line.strip().split(":")
if name == user and password == pwd:
start = time.time()
res = func(*args, **kwargs)
stop = time.time()
print(stop - start)
return res
else:
print("error")
return wapper
@auth
def index():
time.sleep(5)
print("login successful")
index()
五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,
在超时时间内无需重复登录,超过了超时时间,则必须重新登录
import time
def login():
name = input("name>>>:").strip()
password = input("password>>>:").strip()
with open("bb.txt", "rt", encoding="utf-8") as file:
for line in file:
user, pwd = line.strip().split(":")
if name == user and password == pwd:
print("login successful")
else:
print("error")
def wait(func):
wait = 5
def index(*args,**kwargs):
start = time.time()
res = func(*args,**kwargs)
stop = time.time()
result = stop - start
if result >= wait:
login()
else:
return res
return index
@wait
def use():
time.sleep(6)
print("successful")
use()