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。
听起来可能有点像初学者,但现在开始了。
我正在导入一个 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。