title: Why Python built in "all" function returns True for empty iterables?
body: <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>