0.本集概览
1.嵌套作用域与闭包现象
2.nonlocal关键字与内嵌作用域变量修改
3.装饰器到底是什么
4.装饰器的用法和语法糖
5.装饰器如何添加额外参数
回顾一下上一集所讲的,上一集里我们介绍了变量的LEGB索引机制:对一个变量,首先在本地(函数内)查找;之后查找嵌套函数的本地作用域,然后再是查找当前的全局作用域。
1.嵌套作用域与函数闭包
到目前为止,我们还有一个作用域没有介绍,就是嵌套作用域,即E,他是嵌套函数的本地作用域。
1.1.嵌套函数
**首先说说什么是嵌套函数。**Python有一个很有意思的地方,就是def函数可以嵌套在另一个def函数之中。调用外层函数时,运行到的内层def语句仅仅是完成对内层函数的定义,而不会去调用内层函数,除非在嵌套函数之后又显式的对其进行调用。
代码片段:
x = 99
def f1():
x = 88
def f2():
print(x)
f2()
f1()