re_f()
这段代码的输出结果是什么?...为什么读到了全局变量? 我还特地有到Python 3.0的环境中跑了一遍, 发现结果确实是3啊. 不懂就要问, 于是我开始搜寻各种资料, 发现这设计到了变量的作用域....很显然, 这并不能解决本质问题.
变量回写
既然同名这个方向走不通了, 那就往全局方向使劲吧. 如果能让变量只在当前函数起作用, 而不会被其他人随意修改, 不就能够解决这个问题了么?...再来回看一下最开始的问题, 为什么在Python 2.0中, 闭包读取到的变量是全局变量呢? 很明显, 其使用了静态作用域导致的. 那么在2.0中如何解决这个问题呢?...(也不知道为什么2.1比2.2还要晚一年发布)
在函数中如果想修改外部变量, 需要对变量进行声明, 若不声明则创建本地变量.