Python 尝试访问全局变量时出现问题
我知道在类中定义全局变量时如何使用它们,但我在main中有一个全局变量。Python 尝试访问全局变量时出现问题,python,global-variables,scope,Python,Global Variables,Scope,我知道在类中定义全局变量时如何使用它们,但我在main中有一个全局变量。 如果我想在一个类中使用它,哪一个是访问它的导入 我的主要任务是这样的 Main.py: from EvolutionaryAlgorithm import EvolutionaryAlgorithm initialTimeMain = 0 if __name__ == '__main__': evolutionaryAlgorithm= EvolutionaryAlgorithm() . . 我的Evoluti
如果我想在一个类中使用它,哪一个是访问它的导入 我的主要任务是这样的 Main.py:
from EvolutionaryAlgorithm import EvolutionaryAlgorithm
initialTimeMain = 0
if __name__ == '__main__':
evolutionaryAlgorithm= EvolutionaryAlgorithm()
.
.
我的EvolutionaryAlgorithm类有一个使用initialTimeMain变量的方法。
问题是当我在EvolutionaryAlgorithm中添加此导入时:
进化算法
import Main
因为当我运行脚本时,会出现一个错误
从进化算法导入
进化算法:
无法导入名称
进化算法
导入不再被识别如果存在循环导入的情况,短期解决方案是将import语句移动到if子句中:
initialTimeMain = 0
if __name__ == '__main__':
from EvolutionaryAlgorithm import EvolutionaryAlgorithm
evolutionaryAlgorithm= EvolutionaryAlgorithm()
一个更好的长期解决方案是重构您的代码,这样您就不会有循环导入,或者initialTimeMain
是在evolutionaryalgorithy.py
中定义的,当然可以在Main.py
中使用您现有的导入策略
旧答案:
a.py:
globalvar = 1
print(globalvar) # prints 1
if __name__ == '__main__':
print(globalvar) # prints 1
b.py:
import a
print(a.globalvar) # prints 1
如果是循环导入,短期解决方案是将导入语句移动到if子句中:
initialTimeMain = 0
if __name__ == '__main__':
from EvolutionaryAlgorithm import EvolutionaryAlgorithm
evolutionaryAlgorithm= EvolutionaryAlgorithm()
一个更好的长期解决方案是重构您的代码,这样您就不会有循环导入,或者initialTimeMain
是在evolutionaryalgorithy.py
中定义的,当然可以在Main.py
中使用您现有的导入策略
旧答案:
a.py:
globalvar = 1
print(globalvar) # prints 1
if __name__ == '__main__':
print(globalvar) # prints 1
b.py:
import a
print(a.globalvar) # prints 1
你试了什么?您尝试了哪些导入,结果如何。这个问题本身并不愚蠢。但是,请,请,请,尝试一些东西,并张贴你在提问前尝试过的代码。你尝试了什么?您尝试了哪些导入,结果如何。这个问题本身并不愚蠢。但是,请,请,请,尝试一些东西,并发布您在询问之前尝试过的代码。@Federico:import main?你是什么意思?@Federico:请用不起作用的代码更新你的问题。请非常非常清楚“不能运行代码”。这是什么意思?我的意思是导入Main.py,它有一个Main为什么我的问题中有一个-3?@Federico:你现在有-2,我想一些人认为你的问题不清楚或者没有用。我想是在你发布澄清之前。@Federico:import main?你是什么意思?@Federico:请用不起作用的代码更新你的问题。请非常非常清楚“不能运行代码”。这是什么意思?我的意思是导入Main.py,它有一个Main为什么我的问题中有一个-3?@Federico:你现在有-2,我想一些人认为你的问题不清楚或者没有用。我想是在你发布澄清之前。