Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何导入辅助模块以使用需要从第一个执行模块更新全局变量的函数_Python_Python 3.x_Python Import - Fatal编程技术网

Python 如何导入辅助模块以使用需要从第一个执行模块更新全局变量的函数

Python 如何导入辅助模块以使用需要从第一个执行模块更新全局变量的函数,python,python-3.x,python-import,Python,Python 3.x,Python Import,我有一个模块a,它导入一个模块B。模块a有一个不断变化的全局变量。我需要从模块B运行的函数需要这些变量的更新值。我正在尝试这样的事情: 模块A.py: test_var = 0 def updateA(): import B B.update() if __name__ == "__main__": for _ in range(100): updateA() print(test_var) test_var = 0 def upd

我有一个模块a,它导入一个模块B。模块a有一个不断变化的全局变量。我需要从模块B运行的函数需要这些变量的更新值。我正在尝试这样的事情:

模块A.py:

test_var = 0

def updateA():
    import B
    B.update()

if __name__ == "__main__":
    for _ in range(100):
        updateA()
        print(test_var)
test_var = 0

def updateA():
    global test_var // Ensure usage of global scope
    test_var = test_var + 1
    import B
    B.update(test_var)

if __name__ == "__main__":
    for _ in range(100):
        updateA()
    print(test_var)
模块B.py:

import A
def update():
    A.test_var += 1
它应该打印从0到00的数字。
这只是我试图完成的简化示例。

而不是直接引用模块A中的变量。将变量作为参数传递给更新函数

例如,在模块A.py中:

test_var = 0

def updateA():
    import B
    B.update()

if __name__ == "__main__":
    for _ in range(100):
        updateA()
        print(test_var)
test_var = 0

def updateA():
    global test_var // Ensure usage of global scope
    test_var = test_var + 1
    import B
    B.update(test_var)

if __name__ == "__main__":
    for _ in range(100):
        updateA()
    print(test_var)
在模块B.py中

def update(var)
    print(var)

罗斯谢谢你的回复。然而,当模块B.py被导入时,它将导入一个新的模块a,它不是最初运行的同一个实例,这是否会导致a.getVar()返回test_var的初始值,而不是更新的值?您是正确的,感谢您指出这一点。我已经更新了我的答案,找到了更好的解决方案。谢谢H.罗斯。现在让它变得更复杂一点,当我执行模块B中的函数时,我碰巧有一个线程一直在运行,这个线程需要读取test_var并对其进行更改。我开始认为没有办法做到这一点,我认为我应该将我的功能从B模块转移到A模块(我想让它们更多地组织在不同的文件中,因为它们在我的程序中有非常不同的用途),然而,如果你能想出一种方法来做这件事,可能会很有帮助。这可能很难或不可能做到:明白了,非常感谢你的帮助。那我就把所有东西都放到同一个文件里。