这是我的简化代码:
main.py:
import vars, module
module.function()
module.py
:
class Cage:
def __init__(self):
pass
def function():
print(mode)
from vars import *
vars.py:
from module import Cage
cage = Cage()
mode = True
当我运行main.py
时,它给出错误代码NameError: name 'mode' is not defined
。
为什么没有给出期望值True
?
答案 0 :(得分:0)
这是因为vars.py
在到达初始化Cage
的行之前再次进行了mode
的循环导入,导致from vars import *
无法找到mode
作为部分加载的vars
模块的命名空间中的名称。
您可以将module.py
作为模块导入vars
,而无需先导入其名称即可完全装载vars.py
,而应在vars.mode
中引用function
因此,在调用function
时,mode
模块中的名称vars
可用:
def function():
print(vars.mode)
import vars
答案 1 :(得分:0)
这有效, 在主要... module.function(vars.mode)
在模块中..... def功能(模式): 打印(模式)
在vars .... 没有变化