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