python装饰器
程序员文章站
2022-07-10 13:58:39
...
装饰器的作用
- 开放封闭原则
软件实体应该是可扩展而不可修改的。即:对扩展是开放的,对修改是封闭的。
- 装饰器作用
不改变原代码的情况下,拓展新功能
装饰器的实现
- 方式一:函数(闭包函数)
闭包函数特点:1、函数内部嵌套函数;2、外层函数返回值是内层函数;3、内层嵌套函数对外层有一个非全局变量的应用
# 闭包
def demo(a):
def fun():
print(a)
return fun()
demo('闭包函数')
# 装饰器
def decorator(fn): # 外层函数的第一个参数类型为函数或类
def fun():
print('这是装饰器函数功能')
fn()
return fun()
@decorator
def fun2():
print('这是被装饰函数的原功能')
fun2() # fun2 = decorator(fun2)
# 装饰器装饰类
def fun_1(fn):
def fun_2(*args, **kwargs):
print('装饰器扩展的新功能')
return fn(*args, **kwargs) # 装饰器函数装饰类时必须返回创建的对象
return fun_2
@fun_1
class Test(object):
def __init__(self):
print('这是一个init方法')
t = Test()
print(t)
- 方式二:类(call)
略
- 通用装饰器
def fun_1(fn):
def fun_2(*args, *
print('装饰器扩展的新
fn(*args, **kw
return fun_2
@fun_1
def fun_3(a, b, c):
print('a+b+c', a +
fun_3(1, 10, 100)
装饰器的应用
- log日志
- flask框架路由
- pytest/unittest
- django权限校验
- 事物处理
- 缓存处理
- 计算函数运行时间和次数
上一篇: QT的TCP收发协议
下一篇: 1.1 计算机基础知识