装饰器
python原创装饰器小于 1 分钟约 172 字
基础应用
def warpDemo(func):
def wrapper(*args,**kwargs):
print('1')
result = func(*args,**kwargs)
return result
return wrapper
@warpDemo
def main(msg:str):
print('main')
return 'success'
if __name__ == '__main__':
print(main('msg'))
装饰器应用
from functools import wraps
def wrapexp(func):
@wraps(func)
def wrapper(*args, **kwargs):
print('this is a wrapper')
func(*args, **kwargs)
return wrapper
@wrapexp
def exp(a,b,c=3,d=4):
#print(1)
print(a,b,c,d)
args=[1,2]
dt={'c':4,'d':5}
exp(*args,**dt)
基于用户签权
https://www.zhihu.com/question/54035516
from functools import wraps
def permission(permit_users):
def login_acquired(func):
@wraps(func)
def inner():
print(len(permit_users))
if len(permit_users)==3:
print('ab')
return False;
return func()
return inner
return login_acquired
@permission(["ethan", "john", "jack"])
def index():
return "success"
if __name__ == '__main__':
print(index())