装饰器是一种特殊的闭包
功能:1、额外增加功能 2、函数执行时间统计3、执行函数的时候需要进行的预处理 4、权限校验等5、缓存6、日志 (后三个重点)
1、标识符的查找顺序 L>E>G>B
L(local) E G B
L —— Local(function);函数内的名字空间
E —— Enclosing function locals;外部嵌套函数的名字空间(例如closure)
G —— Global(module);函数定义所在模块(文件)的名字空间
B —— Builtin(Python);Python内置模块的名字空间
2、闭包
def func2():
def func1():
print('我是嵌套在func2里面的func1')
return func1
if __name__ == '__main__':
ret = func2()
print