闭包、装饰器
闭包:
如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).
def outer(): x = 1 def inner(): #inner()为闭包,引用非本级非全局变量x print (x) return inner
装饰器:
本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景。
1,开放封闭原则:
- 对扩展是开放的
- 对修改是封闭的
2,语法糖
要将语法糖放在被装饰的函数正上方,中间可以空,不建议空。
# 标准版装饰器 def warpper(f): def inner(*args,**kwargs): print("被装饰函数执行前") ret = f(*args,**kwargs) print("被装饰函数执行后") return ret return inner @warpper def func(*args,**kwargs): print(f"被装饰的{args,kwargs}") return "我是func函数" @warpper def index(*args,**kwargs): print(11111) print(func(1,2,3,4,5,6,7,8,a=1))