title: Why does python `any` return a bool instead of the value?
body: <p><code>and</code> and <code>or</code> return the last element they evaluated, but why doesn't Python's built-in function <code>any</code>?</p>
  
  <p>I mean it's pretty easy to implement oneself like this, but I'm still left wondering why.</p>
  
  <pre><code>def any(l):
      for x in l:
          if x:
              return x
      return x
  </code></pre>
  
  <p>edit:</p>
  
  <p>To add to the answers below, here's an actual quote from that same mailing list of ye mighty emperor on the issue:</p>
  
  <blockquote>
    <p>Whether to always return True and False or the first faling / passing
    element? I played with that too before blogging, and realized that the
    end case (if the sequence is empty or if all elements fail the test)
    can never be made to work satisfactory: picking None feels weird if
    the argument is an iterable of bools, and picking False feels weird if
    the argument is an iterable of non-bool objects.</p>
    
    <p>Guido van Rossum (home page: <a href="http://www.python.org/~guido/">http://www.python.org/~guido/</a>)</p>
  </blockquote>