为什么枚举不给我索引错误?

时间:2020-05-11 09:05:16

标签: python-3.x for-loop enumerate

Python在此for循环中没有给我一个索引错误:

s = ['one', 'two']

for index, char in enumerate(s):
    if s[index - 1] != ' ' or s[index + 1212] != ' ':
        pass

但条件互换后,确实给了我一个索引错误:

s = ['one', 'two']

for index, char in enumerate(s):
    if s[index + 1212] != ' ' or s[index - 1] != ' ':
        pass

有人在解释吗?

1 个答案:

答案 0 :(得分:1)

在大多数编程语言(包括Python)中,布尔表达式一次被评估为一部分,一旦其中一部分为假,评估就停止。这称为“ short-circuit evaluation”或“最低评估”。

在您的情况下,如果s[index - 1] != ' '为假,则s[index + 1212] != ' '完全不会被评估,从而不会引发错误。