Why Python built in "all" function returns True for empty iterables?
<p>I know it has a good reason, but I want to know what reason?</p>

<pre><code>&gt;&gt;&gt; print all([])
True
</code></pre>

<p>If all() is intended to check if every item on iterable evaluates to "True", and we know empty lists are evaluated to False</p>

<pre><code>&gt;&gt;&gt; bool([])
False
</code></pre>

<p>So why the all() returns True for empty lists?</p>

<p>&lt; edit ></p>

<p>I already read the docs, and I know the implementation</p>

<pre><code> def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
</code></pre>

<p>But the question is why not?</p>

<pre><code>def all(iterable):
    if not iterable:
        return False
    for element in iterable:
        if not element:
            return False
    return True
</code></pre>

<p>There is a logic on this? if you have a list of done-tasks</p>

<pre><code>today_todo_status = [task.status for task in my_todo if task.date == today]
can_i_go_home = all(today_todo_status)
</code></pre>

<p>Ok, on the above <strong>hypothetical</strong> example it really makes sense, if I have no tasks, so I can go home.</p>

<p>But there are other cases and I dont think all() was made for todo lists.. LOL</p>

<p>&lt; /edit ></p>
