bool возвращает true для «истинных» значений и false для «ложных» значений.
Случай 1:
(x for x in [])
Создает объект генератора.
Выход:
<generator object <genexpr> at 0x03DCDEF0>
Поскольку объект сгенерирован, его Истина и он возвращает Истину.
Случай 2:
(x for x in [1, 2, 3])
То же, что и выше
Случай 3:
(range(0))
Это просто диапазон (0, 0).
Попробуйте это:
for i in range(0): print(i)
Не будет никакого вывода.
Вы не получите никакого значения, которое равно Falsy и False возвращается.
Случай 4:
(range(3))
Попробуйте это:
for i in range(3): print(i)
Выход:
0
1
2
Значениявозвращаются, что означает его истинность, и возвращается True.
Подробнее о Проверка истинности значения