python关于全局变量之变量遮蔽

全局变量在主程序和模块中的行为是不一样的
– 模块中
在函数中无论是否使用global声明,都可以通过赋值改变全局变量
– 主文件中
如果有global声明则可以通过赋值改变全局变量,但是没有global声明时在函数中无法通过赋值改变全局变量而是创建一个新的局部变量,全局变量中的内容不会改变,但是又可以直接引用全局变量的内容。也就是说读的时候是全局变量,一旦写入就变成了局部变量,这种行为还有一个名词叫变量遮蔽(https://zh.wikipedia.org/wiki/%E8%AE%8A%E6%95%B8%E9%81%AE%E8%94%BD)。
总结就是除了在主文件中使用global时没有变量遮蔽,其它情况下都会存在遮蔽。

发表回复