За кулисами оператор for вызывает iter () для объекта контейнера (здесь это range). Функция возвращает объект итератора, который определяет метод next (), который обращается к элементам в контейнере по одному за раз. Когда больше нет элементов, next () вызывает исключение StopIteration, которое сообщает циклу for завершиться.
В вашем фрагменте:
range (0) подразумевает, что цикл никогда не запустится, вместо этого будет создано исключение stopIteration Если бы это был диапазон (0,1), вы бы получили ожидаемый ответ.
Следовательно, он переходит к следующему утверждению и возвращает true.
Вы можете узнать больше о протоколе итератора в Python.