Раз уж вы так настойчиво спрашиваете, почему.
Задумайтесь, какие преобразования происходят при вычислении
Для начала, оператор == имеет больший приоритет, чем
or, поэтому выражение в скобках эквивалентно
Итак, сначала вычисляется первая скобка
Затем выражение сводится к
Тут надо заметить, что, если бы слева оказалось не
False, а
True, то правая часть никогда бы не вычислялась, поскольку
всегда равно True. На этом основан часто использующийся приём в программировании, когда в правую часть
конъюнкции ставят вызов функции, который должен производиться только в случае истинности левой части (по аналогии, дальнейшее вычисление
a and b and c and d and… не имеет смысла, как только встречается хотя бы один
False). Например:
>>>if is_in_bounds(x, y) and is_empty(x, y):
>>> draw_dot(x, y)
При желании, можно придумать пример и с
or.
В данном же случае происходит
>>>bool(2)
True
>>>False or True
True
На заметку:
>>>True == 1
True
>>>False == 0
True
>>>5 + True
6
>>>False - True
-1
Но это уже особенность питона и нескольких других языков.
А так, всё это - самые основы.
Подумайте ещё, что будет, если написать
И почему
- единственный правильный вариант сделать то, что вы хотите.