我有一個程序比較一系列測試中的兩個類。訪問一個變量if __name__ ==「main」
主程序(稱爲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 __」:'塊之下的任何內容都將不再執行。 –
另外,這聽起來像你正試圖設置循環進口?你的模塊知道主入口點? – jdi
使用'if ... is True'是進行額外工作,減少代碼清晰度,並且有時會導致錯誤的好方法。只要使用'if ...'。 –