0

这是我的简化代码:

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

4

2 回答 2

0

这是因为在到达初始化的行之前再次vars.py循环导入,导致无法在部分加载的模块的命名空间中找到名称。Cagemodefrom vars import *modevars

您可以将module.py导入vars作为模块而不首先导入其名称以vars.py使其完全加载,然后引用vars.modeinfunction以便在function调用时,该名称modevars模块中可用:

def function():
    print(vars.mode)

import vars

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

于 2020-04-04T14:16:01.080 回答
0

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

在模块中..... def function(mode): print(mode)

在 vars.... 没有变化

于 2020-04-04T14:28:51.700 回答