Python 尝试访问全局变量时出现问题

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中有一个全局变量。
如果我想在一个类中使用它,哪一个是访问它的导入

我的主要任务是这样的

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,我想一些人认为你的问题不清楚或者没有用。我想是在你发布澄清之前。