测开之路十一:作用域、闭包和修饰器

 

作用域

 

L (Local) 局部作用域
E (Enclosing) 闭包函数外的函数中
G(Global) 全局作用域
B (Built-in) 内建作用域
locals()和globals()
local -> enclosing-> global -> build-in

 

 

闭包

1.闭包函数必须有内嵌函数
2.内嵌函数需要引用嵌套函数的变量
3.闭包函数必须返回内嵌函数

第一层def的参数为函数名,第二层def的参数为第一层传的函数需要的参数

 

 闭包用法:

1.直接调用

 

2.修饰器调用, 修饰器的本质是闭包

 

 

装饰器的作用就是为已经存在的对象添加额外的功能。
常用场景:插入日志、性能测试、事务处理、缓存、权限校验等

 

当一个函数有两个修饰器的时候,执行顺序为先执行靠近主函数的,再执行上面的装饰器,如:

很明显,从打印结果来看,是先执行了run2,再执行的run1

 

posted @ 2019-04-21 23:20  向前走。  阅读(371)  评论(0编辑  收藏  举报