python的多个装饰器实现信息的登录
程序员文章站
2022-07-15 08:18:47
...
要求
['root','admin','redhat']
1.user in [ ]
2.user+vip
编程
import functools
import inspect
login_session = ['root','admin','redhat']
def is_login(fun):
@functools.wraps(fun)
def warapper(*args,**kwargs):#('root',)
if args[0] in login_session:
temp = fun(*args,**kwargs)
return temp
else:
print('Error:%s 没哟登陆成功' %(args[0]))
return warapper
def is_admin(fun):
@functools.wraps(fun)
# """
# inspect.getcallargs会返回一个字典
# key:形参
# value:对应的实参
# """
def wrapper(*args,**kwargs):
inspect_res = inspect.getcallargs(fun,*args,**kwargs)
print('inspect的返回值是:%s' %(inspect_res))
if inspect_res.get('name') == 'root':
temp = fun(*args,**kwargs)
return temp
else:
print('not root user,no permisson add user')
return wrapper
@is_login
@is_admin
def add_user(name): # is_login((is_admin(adduser)) is_login(wrapper())
print('add_user')
add_user('python')
结果
上一篇: C语言之二进制读写文件
下一篇: Java学习笔记 - 第016天