在早期的汇编中, 对一个变量定义后, 就作为全局变量作用于整个程序. 在编译之后, 将所有该变量名替换为正确的地址, 相当于维护了一个变量名到地址的映射表....动态作用域读取变量的结果, 其实与上方的回写变量的方式差不多, 不同的是, 动态作用域保留了全局变量原始的值....静态作用域
静态作用域也是通过变量的对照表来实现, 与动态作用域不同的是, 每个函数能看到的变量对照表只有自己的和全局的, 上面的函数调用, 换成静态作用域大概如下:
?...这样就能让函数绕过上层, 直接访问全局变量了.
现象
了解了变量作用域相关内容, 也就能够解释最开始遇到的现象了....在 Python 中有两个关键字对变量进行声明:
global: 声明全局变量, 既通过静态作用域的方式查找变量
nolocal: 通过动态作用域的方式查找变量
当然, Python中通过上面关键字标识的变量修改