python 导入共享值?

python import shares common values?

听起来可能有点像初学者,但现在开始了。

我正在导入一个 Typedef 脚本,其中包含在我的程序中使用和调用的变量。我通过简单地在 package/workspace.

中的所有脚本上调用 'import Typedef' 来做到这一点

现在,我通过调用以下脚本更改 Typedef 中的一个变量:

Typedef.myVariable = newVariable

如果其他脚本引用此变量,是否会反映此更改?

如果不是,我应该如何纠正?

如果有帮助,我正在使用 Python 3.4,使用 Anaconda 的 Spyder 进行编码。

是的,正如评论中所说。

你只需要处理像

这样的结构

from TypeDef import myvariable - 在这种情况下,myvariable 是一个新名称 在导入时指向变量的值,并且不会 "seeing" 更新为 TypeDef.myvariable.

的新值

一旦您为本地命名空间(或 "global" 命名空间 - 在 Python 中,全局变量实际上是 "module locals")中的对象分配名称,该名称将指向该特定对象。

请谨慎使用,并确保在您的项目中记录此类用法。这是 Python 中最常使用的,而不是静态语言所需的 "Singletons"。

此外,该技术可用于更改其他模块中的实际功能或 类 - 这就是所谓的 "Monkey patching"。 (一般来说,对于生产代码来说不太好 - 另一方面,对于测试代码来说非常好,在那里你用模拟对象猴子修补正在测试的函数的依赖性)

是的,因为 Typedef 模块中的变量在模块范围内,无论导入该模块的什么地方都可用。

如需进一步阅读,请查看 Python Scopes and Namespaces