【发布时间】:2012-05-15 13:24:50
【问题描述】:
我有一个程序可以在一系列测试中比较两个类。
主程序(称为 initial.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,使用这段代码删除一个值
import initial
...
if initial.valueChange is True:
del initial.values['valueTwo']
...
这会返回错误
del initial.values['valueTwo']
KeyError: 'valueTwo'
我认为这是因为添加 valueOne 和 valueTwo 会将其添加到本地范围内,但即使使用全局值也无法修复它。我将如何解决这个问题?
【问题讨论】:
-
如果你将 initial.py 导入另一个模块,
if __name__ == "__main__":块下的任何东西都将不再执行。 -
另外,听起来您正在尝试设置循环导入?你的模块知道主入口点吗?
-
使用
if ... is True是做额外工作的好方法,使您的代码不太清晰,有时还会导致错误。只需使用if ...。