Python作用域与参数传递全解析
1. 全局变量与局部变量
在Python中,局部变量在函数返回时会消失,而全局变量则不会。除了全局变量,还有其他技术可以实现状态保留,例如默认可变参数和封闭函数作用域,但这些方法比将值推送到全局作用域进行保留要复杂得多。
有些程序会指定一个单独的模块来收集全局变量,只要这是预期的做法,就不会有太大问题。此外,在Python中使用多线程进行并行处理的程序本质上依赖于全局变量,全局变量成为并行线程中运行的函数之间的共享内存,从而充当通信设备。
不过,尤其是对于编程新手来说,应尽量避免使用全局变量,尝试通过传入参数和返回值进行通信。这样做在未来会让你和同事都感到满意。
2. 跨文件变量修改问题
2.1 直接修改的问题
虽然可以直接修改另一个文件中的变量,但通常不建议这样做。例如以下两个模块文件:
# first.py
X = 99
# second.py
import first
first.X = 88
第一个文件定义了变量 X ,第二个文件通过赋值修改了它。但这种赋值方式过于隐式,维护或复用第一个模块的人可能不知道导入链中某个遥远的模块会修改 X 的值。这会导致两个文件之间的耦合过强,难以独立理解和复用。
2.2 更好的做法
更好的跨文件通信方式是调用函数,传入参数并获取返回值。例如,可以编写一个访问器函数来管理变量的更改:
订阅专栏 解锁全文
1378



被折叠的 条评论
为什么被折叠?



