为什么我的模块无法访问应该导入的变量?

时间:2020-04-04 13:47:10

标签: python python-3.x

这是我的简化代码:

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

2 个答案:

答案 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

演示:https://repl.it/@blhsing/FabulousOldAggregator

答案 1 :(得分:0)

这有效, 在主要... module.function(vars.mode)

在模块中..... def功能(模式): 打印(模式)

在vars .... 没有变化