如何在python模块中传递全局变量?

如何在python模块中传递全局变量?,python,module,global,Python,Module,Global,我想用python传递一个全局变量。我知道这不是一个可取的方法,但这属于一个更大的应用程序,我需要这样做 这是我的主要任务 from allfiles.subfiles.allclasses import Machine global a def func(): a=5 print("Inside function:", a) func() print("Outside function:", a) machine = Machine(

我想用python传递一个全局变量。我知道这不是一个可取的方法,但这属于一个更大的应用程序,我需要这样做

这是我的主要任务

from allfiles.subfiles.allclasses import Machine
global a

def func():
   a=5
   print("Inside function:", a)

func()

print("Outside function:", a)

machine = Machine(a)
这是我的allclasses.py

import main

    class Machine():
        def __init__(self, name):
            print("created machine: ", main.a)
见附件结构图

不知何故,AllClass中的import main是一个问题。我试着从主导入*同样的问题 我有一个导入错误: 无法从“allfiles.subfiles.allclasses”导入名称“Machine”

我只需要将这个全局变量从单向传递到所有类,这样就不会出现循环问题。该值从func设置一次,并且不再更改
我缺少一些基本的东西吗?

您不能将两个文件相互导入,我认为您应该使用数据库。

这仍然不能解决我的问题。导入在变量定义之后完成。它完全遵循这个方向

   def func():
       global a
       a=5
       print("Inside function:", a)
    
    from allfiles.subfiles.allclasses import Machine
    
    func()
    
    print("Outside function:", a)
    
    machine = Machine()

如果您在machine=Machinea中传递了一个machine.\uuuu init\uuuuu self,name将其作为name接收,为什么不直接执行printcreated machine:,name?这只是一个示例。真正的事情更复杂。当然,我对传递变量更感兴趣……如果您能提供一个更准确地反映您真实情况的示例,那将是一件好事。我将其最大限度地简化,以暴露我的问题。我需要将我的变量发送给allclaases,以便它可以在函数中使用。全局变量仅在函数中有意义,如果需要在函数中指定全局变量,则会创建一个同名的局部变量。在全局范围内使用,它什么也不做。您可能会在找到有关循环导入的有用信息。我了解到,访问全局变量可以像访问属性一样完成,这就是我导入main的原因……是的,您可以进行循环导入,例如,请参阅。我看不出使用数据库是如何合理解决范围问题的…@Thierry:我也在函数中加入了global。。。我不明白为什么它现在不起作用