如何构建此代码以避免重复?

How can I structure this code to avoid repetition?

我有两个条件,ab。如果 a 为真,则应执行一个代码块,如果 ab 为真,则应执行另一个代码块。有没有比下面更好的代码结构方式 - 我可以避免重复测试 a?

if a or b:
    if a:
        <block 1>
    <block 2>

不经过反复试验是不行的。为了验证这一点,只需写下真相table。

但是您可以避免 if 语句的嵌套:

if a:
    <block 1>
if a or b:
    <block 2>

这可以使代码更具可读性。

我在这里假设 a 是一个布尔值,而不是一个更复杂的表达式的占位符,该表达式的计算成本可能很高。在后一种情况下,您当然会只对表达式求值一次并将结果分配给布尔值。