2015-07-21 60 views
0

這是Python語言,但可以應用於任何語言。把錯誤代碼放在OR語句中可以嗎?

a = None 
if (not a) or (a+3==5): 
    print("Is this okay?") 

它是良好的編程習慣有a+3 if語句,即使如果aNone它會導致錯誤?

我依靠or的錯誤,這似乎是一個壞主意,我的情況下,a之前停止實際上是別的東西,不支持另外,或or陳述(在其他語言)的外觀在兩個值。

什麼是最好的方式來編程呢?

+0

我想指出'如果字典和字典[鍵]中的鍵是一個很常見的模式。 – NightShadeQueen

+0

在你的例子中,不會拋出任何錯誤,因爲不是無爲真,所以if條件一旦找到1條真正的條件就立即繼續,因爲這是一條或一條語句。 –

+0

我不知道你在用什麼,但'如果hasattr(a,'__ add __')....'可能是你想要的? – NightShadeQueen

回答

1

是的,你可以依靠短路來執行錯誤處理和驗證。

不過你的情況,你的邏輯是錯誤的,你將需要and執行這個錯誤處理

if a and (a+3==5): 

或者你甚至可以進行類型檢查

if isinstance(a, int) and (a+3==5): 

這同樣會短路在閱讀+操作之前

+0

如果'a'爲'0',這會產生不正確的結果。我想你可能需要一個明確的'如果一個!= None'。 – TigerhawkT3

+0

我的邏輯工作正常('不'''返回'真''所以'或''短路「),但你的更快,更容易閱讀。 –

相關問題