目录
import time
def index():
print('welcome to index')
time.sleep(1)
return 123
def time_count(func):
# func = 最原始的index
def wrapper():
start = time.time()
res = func()
end = time.time()
print(f"{func} time is {start-end}")
return res
return wrapper
index = time_count(index)
res = index()
print(res)
import time
def time_count(func):
# func = 最原始的index
def wrapper(*args, **kwargs):
start = time.time()
res = func(*args, **kwargs)
end = time.time()
print(f"{func} time is {start-end}")
return res
return wrapper
@time_count # home = time_count(home)
def home(name):
print(f"welcome {name} to home page")
time.sleep(1)
return name
@time_count # index = time_count(index)
def index():
print('welcome to index')
time.sleep(1)
return 123
res = home('egon')
print(f"res: {res}"")
def deco(func):
def wrapper(*args,**kwargs):
"""加功能"""
res = func(*args,**kwargs)
return res
return wrapper
import time
current_user = {'username':None}
def login(func):
def wrapper(*args,**kwargs):
if current_user['username']:
res = func(*args,**kwargs)
return res
user = input('username: ').strip()
pwd = input('password: ').strip()
engine = 'file'
if engine =='file':
print('base of file')
if user == 'nick' and pwd == '123':
print('login successful')
current_user['user'] = user
res = func(*args,**kwargs)
return res
else:
print('user or password error')
elif engine =='mysql':
print('base of mysql')
elif engine == 'mongodb':
print('base of mongodb')
else:
print('default')
return wrapper()
# @login
# def home(name):
# print(f'welcome {name} to home page')
# time.sleep(1)
@login --@login # === index = login_deco(index)
def index():
print('welcome to index')
time.sleep(1)
res = index()
print(res)
func
,但是三层的装饰器解除了这个限制,多个参数的只需要在三层装饰器中多加入几个参数即可。import time
current_uesr = {'username': None}
def auth(engine='file'):
def login(func):
# func = 最原始的index
def wrapper(*args, **kwargs):
if current_user['username']:
res = func(*args, **kwargs)
return res
user = input('username: ').strip()
pwd = input('password: ').strip()
if engine == 'file':
print('base of file')
if user == 'nick' and pwd == '123':
print('login successful')
current_uesr['usre'] = user
res = func(*args, **kwargs)
return res
else:
print('user or password error')
elif engine == 'mysql':
print('base of mysql, please base of file')
elif engine == 'mongodb':
print('base of mongodb, please base of file')
else:
print('please base of file')
return wrapper
return login
@auth(engine='mysql')
def home(name):
print(f"welcome {name} to home page")
time.sleep(1)
@auth(engine='file')
def index():
print('welcome to index')
time.sleep(1)
res = index()
原文:https://www.cnblogs.com/shaozheng/p/11574246.html