【发布时间】:2010-02-19 13:28:51
【问题描述】:
我调查了python中全局变量的范围仅限于模块。但我需要范围在不同模块之间是全局的。有这样的事吗?我玩了__builtin__,但没有运气。
提前致谢!
【问题讨论】:
标签: python scope global-variables
我调查了python中全局变量的范围仅限于模块。但我需要范围在不同模块之间是全局的。有这样的事吗?我玩了__builtin__,但没有运气。
提前致谢!
【问题讨论】:
标签: python scope global-variables
您可以通过显式导入其他模块来访问全局变量。
在模块foo:
joe = 5
在模块bar:
from foo import joe
print joe
但请注意,不建议这样做。使用函数隐藏对模块变量的访问会更好。
【讨论】:
Python 不支持在多个模块之间共享全局变量:这是一个特性。隐式修改远处使用的变量的代码令人困惑且无法维护。 真正的 解决方案是将所有状态封装在一个类中,并将其实例传递给任何必须修改它的对象。这可以使代码更清晰、更可维护、更可测试、更模块化和更可扩展。
【讨论】:
必须通过对范围的引用或在 global 或 nonlocal (3.x+) 指令之后写入本地以外的范围。
【讨论】: