2012-12-05 63 views
1
a = True 
obj = {some object} 

while a and obj: 
    doSomething() 
    certain if statements: 
    ^some of these will turn a False or obj to None 

^當a = True和obj存在時,這會繼續運行嗎?Bool邏輯+布爾和對象:

如果什麼都是在同一時間錯誤 - 將假和無 - >評估爲true,因此它保持運行還是會退出while循環

+1

python'None'與'False'同義。查看真值表也將有助於找出答案。 – sean

+0

@sean這是不正確的。 'bool(None)','bool(False)'和'bool(0)'都是假的,但是'None不是False'是真的。 – Kos

+0

我也不知道,但它仍然運行,即使沒有不是假的 –

回答

1

可以,但「一」保持真實,它將運行OBJ存在

如果兩個去假時,將評估爲False

如果只是一個人去假它會評估爲False

嘗試寫:

在你的Python解釋器(False,並且無)

它會評估爲False

+0

你假設對象沒有實現'__bool__'(或者2.x中的'__nonzero__')。 –

+0

好的 - 謝謝 - 尋求幫助。該對象沒有__bool__方法,所以我假定它使用Python的預先存在的方法。 –

+0

@Lattyware是的,我是 - 好點 –

3

如果兩者都在同一時間錯誤是什麼 - 將假和無 - >評估爲真,因此繼續運行還是會退出while循環

只要and操作數的至少一個計算結果爲False,循環就會停止。因此,如果均爲評估爲False,循環也停止。

重要的是要注意,FalseNone不是唯一的東西,評估到False。有關詳細信息,請參閱documentation