我有一个python模块,例如myModule在子文件夹中,我有两个文件:
__init__.py
:
from _auxiliary import *
_auxiliary.py
:
myvar=False
def initialize():
global myvar
myvar=5
当我跑步时,现在在ipython中:
>> import myModule
>> myModule.initialize()
变量myModule.myvar未更改,即False
如果我把所有内容都放在__init__.py
有关如何修复它的想法吗?
答案 0 :(得分:0)
Python - Visibility of global variables in imported modules
问题在于全局性与相关模块有关。
您可以直接导入_辅助:
from mymodule import _auxiliary
_auxiliary.initialize()
print _auxiliary.myvar
答案 1 :(得分:0)
简短的回答是Python中的全局变量对于模块是全局的,而不是跨所有模块。 (这与其他语言略有不同,可能会造成一些混淆)。
解决这个问题的简单方法(还有一些其他方法)是在原始模块中定义一个getter方法,在你的情况下:
_myvar=False
def initialize():
global _myvar
_myvar=5
def myvar():
global _myvar
return _myvar
因此,您可以使用任何模块中的正确值访问_myvar
实例。
import myModule
myModule.initialize()
print("myvar value:", myModule.myvar())
以前的代码会显示“myvar value:5”