这个问题可以用与语言无关的方式来问,但我是在 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 中的 &&)。
& 用于按位“与”,不会短路,所以不要使用它。
