问题描述
main.py
from functions import my_func
my_var: int
def main():
my_var = 5
my_func()
functions.py
from main import my_var
def my_func():
print(my_var)
它不起作用。我了解我可以在my_var
中通过my_func()
,但是还有其他方法吗?如果可以,我该怎么做?
解决方法
在第2行上,您无法从my_func
导入functions.py
,因为这需要在my_var
的第一行从main.py
导入funtions.py
。 / p>
这里的问题是,您正在尝试与局部变量进行交互,因此在与函数进行交互之前,必须在函数内部使用关键字“全局变量”。另一个问题是Python中的循环导入(请检查答案:Circular (or cyclic) imports in Python)。
如果您确实导入foo(在bar.py内部)和导入bar(在foo.py内部),则可以正常工作。到实际运行任何东西时,两个模块都将完全加载,并且相互引用。
问题是当您改为从foo导入abc(在bar.py内)和从bar导入xyz(在foo.py内)执行操作时。因为现在每个模块都需要先导入另一个模块(这样我们才能导入的名称已经存在)才能导入。