2011-07-15 132 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',这是错误的结果。 –

相关问题