我有一些Python代碼是這樣的:Python名稱未定義,但確實評估爲true。怎麼樣?
try:
bob = bob_module.Bob('alpha')
except Exception as e:
print 'Alpha mode failed for bob: ' + str(e) + ').'
try:
if bob:
bob.add('Beta')
else:
bob = bob_module.Bob('Beta')
except Exception as e:
print 'Beta mode failed for bob: ' + str(e) + ').'
此代碼時跑阿爾法模式失敗,一個可以理解的原因(與阿爾法服務器交互失敗)。但是,由於「名稱」bob「未定義」的原因,beta模式失敗。
當然,如果名稱bob
沒有定義,那麼if bob
等於假,我們拖放到else
條款並運行Bob
構造結果賦給變量bob
?
我現在不能調試這個,因爲導致Alpha模式失敗的錯誤是暫時的,現在已經消失了,但我想理解這一點有兩個原因:智力好奇心,並使我的代碼在alpha模式下健壯開始再次失敗。
_「當然,如果名字bob沒有定義,那麼如果bob等於false_」嗯,沒有。這就像說:「如果外國人不存在,他們肯定是綠色的」。這沒有任何意義。如果它不存在,它應該如何評估任何事情? –
'name bob is not defined'意思是'如果bob'失敗,不是'else'執行。沒有被定義與「無」或「假」不一樣 –
由於'bob = bob'引發了異常bob沒有被設置。見[這個答案](https://stackoverflow.com/a/25666911/4725649) – EndermanAPM