2011-07-15 91 views

回答

10

更好的是使限制更加明顯

start_point = max(i - words, 0) 

這樣一來,任何閱讀可以看到你限制值。

使用任何形式的if的缺點是您計算兩次i - words。爲此使用臨時會導致更多的代碼膨脹。

因此,在這些情況下使用maxmin

+0

您需要_min_不_max_,夥計們。 – smci

+0

錯誤,上面的'min'限制,以下的'最大'限制 –

+0

Doh。你是對的。證據是時候了。 – smci

1

如何

start_point = 0 if i - words < 0 else i - words 

start_point = i - words if i - words < 0 else 0 

甚至更​​好,最清晰的方式:

start_point = max(i - words, 0) 

由於米哈伊說,在他的評論,最後的辦法是,不僅更清晰讀取和寫入,但只評估一次該值,如果它是函數調用可能很重要。

+0

它計算兩倍相同的數量。當然,這裏有一個簡單的減法,但也可以使用這個例子,而不是'我'他會有'a_very_complex_function_taking_too_long_to_give_an_answer' –

+0

謝謝。我會將這個事實添加到帖子中。 –

+2

'max'是正確的。觀察:'max(-3,0)'返回'0','max(3,0)'返回'3',這是預期的行爲。還要注意:'min(-3,0)'返回'-3','min(3,0)'返回'0',這是錯誤的結果。 –

相關問題