python装饰器
装饰器
装饰器的本质: 就是不改变被装饰函数的代码以及原来函数的调用方式,增加新的功能
- 简单不带参数的装饰器
def fun(fn): def inner(): print('开始前') fn() print('结束后') return inner @fun def test(): print('test') test()
- 带参数的装饰器函数
def wrapper(fn): def inner(*args, **kwargs):
# 执行被装饰函数之前的操作 print('手机有网') ret = fn(*args, **kwargs) # 真正执行原来的代码
# 执行被装饰函数之后的操作 return ret return inner @warpper # 等于func = wrapper(func) # inner def func(tools): print("使用%s上课" % tools) return "成功了" print(func("手机"))