闭包、装饰器
闭包:
如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(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))
浙公网安备 33010602011771号