1. 编写函数,(函数执行的时间用time.sleep(n)模拟)
import time
def count_time():
start = time.time()
time.sleep(1)
print('我是输出的内容!我要花费零点几毫秒的时间
')
stop = time.time()
print('函数一共运行时间为:', stop - start)
count_time()
2. 编写装饰器,为函数加上统计时间的功能
import time
def timer(func):
def swapper(*args, **kwargs):
start = time.time()
res = func(*args, **kwargs)
stop = time.time()
print(stop - start)
return res
return swapper
@timer
def single():
time.sleep(1)
print('what are you waiting for?')
single()
3. 编写装饰器,为函数加上认证的功能
import time
def id(func):
def wrapper(*args, **kwargs):
account = input('account:').strip()
password = input('password:').strip()
if account == 'avery' and password == '123':
res = func(account)
else:
print('wrong password')
return wrapper
@id
def single(name):
print('why are you waiting for %s?' % name)
return 'fish'
single('avery')
4. 编写装饰器,为多个函数加上认证的功能
# 用户的账号密码来源于文件,要求登录成功一次,后续的函数都无需再输入用户名和密码
# 注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式
import time
login_user = {'name': None, 'start_time': None}
def login(func):
def wrapper(*args, **kwargs):
if login_user['name']: # 此段代码的精髓,经过一次登录后,后续函数无需再次验证用户名密码
return func(*args, **kwargs)
account = input('your account:').strip()
code = input('your password:').strip()
with open(r'db.txt', 'rt', encoding='utf-8') as f:
for line in f:
line = line.strip()
# print(line,type(line))
user_dic = eval(line)
# print(user_dic,type(user_dic))
# user_dic = eval(user_dic)
# print(user_dic,type(user_dic))
if account in user_dic['name']:
# if account in user_dic:
if code == user_dic['password']:
# global login_user['name']
login_user['name'] = account
login_user['start_time'] = time.time()
return func(*args, **kwargs)
else:
print('Code err')
break
else:
print('user is not find')
return wrapper
@login
def index():
time.sleep(1)
print('Why are you waiting1 for %s' % login_user['name'])
@login
def home():
time.sleep(2)
print('Why are you waiting2 for %s' % login_user['name'])
index()
home()