我有两个代码片段,基本上做同样的事情。以下是两个样本:
retval = count or num_element > 0
和
if count or num_element > 0 :
retval = True
else:
retval = False
第一种选择是否优先于第二种选择?我知道人们有自己的选择。但我很想知道是否有任何表现或其他影响。我觉得第二种方式更具可读性。
答案 0 :(得分:10)
他们不基本相同。如果count
是真值(非零,或者不是空容器等),那么count
的值将以第一种形式分配。第二种形式总是指定一个布尔值。
除非语句是紧密的高迭代计数循环的一部分,否则性能不应成为问题。即使是循环的一部分,差异也会很小。
剩下的是一种风格选择,但你的第二种形式通常非常多余。
每当我看到if test: value = True
,else: value = False
语句时,通常都表明有人不明白测试本身已经返回布尔值或者可能是合而为一。
如果您需要一个真正的布尔值,请使用:
retval = bool(count) or num_element > 0
否则只需坚持使用第一个选项。
答案 1 :(得分:2)
如果您特别希望retval
结束True
或False
(如果该值真实,可能不是count
的值),您可以这样做以下内容:
retval = True if count else num_element > 0