欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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')

结果
python的多个装饰器实现信息的登录

相关标签: python