我有一个程序,在一系列测试中比较两个类。在
主程序(称为初始.py)将这两个值赋给字典
import testcheck
values = {}
valueChange = False
if __name__ == "__main__":
values['valueOne'] = testcheck.assignValue() #see note 1
values['valueTwo'] = testcheck.assignValueTwo()
testcheck.checkValues() #see note 2
while valueChange is True :
values['valueTwo'] = testcheck.assignValueTwo()
testcheck.checkValues()
注1:这两个函数都返回相同的类,但值不同
注2:比较两个类。在一系列测试之后,valueChange被设置为True,并使用此代码删除一个值
^{pr2}$这将返回错误
del initial.values['valueTwo']
KeyError: 'valueTwo'
我认为这是因为添加valueOne和valueTwo会将其添加到本地范围内,但即使使用全局值也无法修复它。我该怎么解决这个问题呢?在
这似乎是一个设计问题。你似乎在设置循环导入,如果可能的话应该避免。如果您想要的是在包的各个模块之间共享全局状态,那么您可能需要利用将状态存储在
testcheck
模块中,而不是存储在initial.py
的全局变量中测试检查.py
初始.py
^{pr2}$其他模块.py
^{3}$我不知道这整件事的实际用途。但也许这会让你知道从哪里开始寻找。不再有其他模块的循环导入初始.py入口点。您正在testcheck模块中存储所有全局变量。这个例子既快又脏。这只是为了说明。在
任何模块都不应该试图访问另一个处理
if __name__ == "__main__"
块内数据的模块的数据。因为现在您假设它将始终用作入口点(从不被其他东西导入),并且开始对代码施加限制。在相关问题 更多 >
编程相关推荐