装饰器分为无参装饰器和有参装饰器
无参装饰器:在装饰被装饰对象时,没有参数传入的装饰器
有参装饰器:通过三层闭包,最外层传值,为装饰器提供多样功能选择(客户权限分类)。
# 有参装饰器: 在某些时候,我们需要给用户的权限进行分类
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()>>>无权限