将嵌套的"if"语句替换为(看似)等效的"elif"和"not"


if statement1:
if statement2:
if statement3:
return desired_action
else:
return action3
else:
return action2
else:
return action1

vs:2.

if not statement1:
return action1
elif not statement2:
return action2
elif not statement3:
return action3
else:
return desired_action

我倾向于选择第二种方式,但出于某种原因,它似乎有点。。有风险的或者与第一种方法一样不可靠。

还有,我真的需要那个elif吗?当我达到某个if时,我会返回。非常感谢。

有惯例或标准吗?

根据德摩根定律,这是等价的:NOT (A AND B) = (NOT A) OR (NOT B)

如果只想执行一个备选操作,则需要elif。如果没有它们(假设所有条件都为False(,您将触发每一个备选操作。

关于选择两个代码中的哪一个有点主观。第二个更吸引人,我倾向于选择这个。

注意。你对第二个块的缩进不正确,我修复了它

最新更新