我有两个条件,a
和b
。如果a
为真,则应执行一个代码块,如果a
或b
为真,则应执行另一个代码块。是否有更好的方法来构建代码而不是以下内容 - 我可以避免重复测试a
吗?
if a or b:
if a:
<block 1>
<block 2>
答案 0 :(得分:1)
没有重复测试是不可能的。要验证这一点,只需写下真值表。
但是,您可以避免嵌套if
语句:
if a:
<block 1>
if a or b:
<block 2>
这可以使代码更具可读性。
我在这里假设a
是一个布尔值,而不是占位符表示更复杂的表达式,评估可能很昂贵。在后一种情况下,您当然只评估表达式一次,并将结果赋值为布尔值。