装饰器分为无参装饰器和有参装饰器

无参装饰器:在装饰被装饰对象时,没有参数传入的装饰器

有参装饰器:通过三层闭包,最外层传值,为装饰器提供多样功能选择(客户权限分类)。

# 有参装饰器: 在某些时候,我们需要给用户的权限进行分类
def user_level(level):
    def deco(func):
        def wrapper(*args,**kwargs):
            if level == 'VIP':
                # 添加超级用户的功能
                print('&&&&&')
                res = func(*args,**kwargs)
                return res
            elif level == 'Normal':
                # 添加普通用户的功能
                print('#####')
                res = func(*args,**kwargs)
                return res
            else:
                print('无权限')
                return 
        return wrapper
    return deco

@user_level('111')

def skin():
    print('*****')
skin()

>>>无权限