Я знаю, что у него есть веская причина, но я хочу знать, в чем причина?
>>> print all([])
True
Если all() предназначен для проверки того, соответствует ли каждый элемент в iterable "True", и мы знаем, что пустые списки оцениваются как False
>>> bool([])
False
Итак, почему all() возвращает True для пустых списков?
<edit>
Я уже читал документы, и я знаю реализацию
def all(iterable):
for element in iterable:
if not element:
return False
return True
Но вопрос в том, почему нет?
def all(iterable):
if not iterable:
return False
for element in iterable:
if not element:
return False
return True
В этом есть логика? если у вас есть список выполненных задач
today_todo_status = [task.status for task in my_todo if task.date == today]
can_i_go_home = all(today_todo_status)
Хорошо, на примере гипотетического это действительно имеет смысл, если у меня нет задач, поэтому я могу вернуться домой.
Но есть и другие случаи, и я не думаю, что все() были сделаны для списков todo.. LOL
</edit>