为什么读到了全局变量? 我还特地有到Python 3.0的环境中跑了一遍, 发现结果确实是3啊. 不懂就要问, 于是我开始搜寻各种资料, 发现这设计到了变量的作用域....回顾历史
要想理解这个现象, 就得把时间线往回拉, 拉到什么时候呢? 就从汇编说起.
在早期的汇编中, 对一个变量定义后, 就作为全局变量作用于整个程序....在函数sort中的所有变量, 都加上_sort后缀, 比如变量i, 就定义为i_sort, 但无法避免另外一个sort函数, 那就在后缀再拼上一个文件名? 但如果文件名也一样呢?...如果说, 我在函数退出的时候, 把变量再改回我进来时候的样子, 不就能假装什么都没有发生吗?...很简单, 只要函数的变量与全局变量, 实际指向的地址不同就可以了. 如何实现呢?
函数使用一张自己的变量名对照表, 就可以了. 大概就长这样:
?
这样, 函数使用的变量就是真正的局部变量了.