Skip to main content
 首页 » 编程设计

python之如何使嵌套的 IF 语句更整洁

2025年05月04日15leader

这个问题可以用与语言无关的方式来问,但我是在 python 的上下文中问的,因为不同的语言会有不同的细微差别。

我认识到这类似于 this question但我认为我的不同之处在于我问的是将两个条件放在同一个带有 & 的 if 语句中会产生错误的情况。

假设我想看看 abc[x] 是否等于“鱼”,但假设我不确定 len(abc) 是否等于>= 到 x。我不能只使用 if abc[x]=='fish' 因为它的索引可能超出范围。因此我需要做

if len(abc)>x: 
    if abc[x]=='fish': 
        dostuff 
    else: 
        dootherstuff 
else: 
    dootherstuff 

如果我没有两个 else 语句最终执行相同的 dootherstuff,是否有更简洁的方法来执行此操作?如果我想更改 dootherstuff 晚于我必须在两个地方更改它但到那时我可能会忘记。当然,我可以尝试注释代码以在以后提醒自己,或者将 dootherstuff 设为一个函数,但这似乎仍然是次要的。很多时候,当我结束执行此操作时,dootherstuff 只是一行代码,因此即使它解决了后续更改场景,将其作为一个函数也不会感觉好多少。

请您参考如下方法:

当然,这是:

if len(abc) > x and abc[x] == 'fish': 
    dostuff 
else: 
    dootherstuff 

and 短路,所以 abc[x] == 'fish' 只会在 len(abc) > x 时被计算是 True。大多数语言都有类似的运算符(例如 C 中的 &&)。

& 用于按位“与”,不会短路,所以不要使用它。