title: How does the "all" function in Python work?
body: <p>I searched for understanding about the <a href="https://docs.python.org/2/library/functions.html#all" rel="nofollow noreferrer"><code>all</code></a> function in Python, and I found <a href="https://stackoverflow.com/questions/19389490/how-pythons-any-and-all-functions-work">this</a>, according to here:</p>
  
  <blockquote>
    <p><a href="https://docs.python.org/2/library/functions.html#all" rel="nofollow noreferrer"><code>all</code></a> will return <code>True</code> only when all the elements are Truthy.</p>
  </blockquote>
  
  <p>But when I work with this function it's acting differently:</p>
  
  <pre><code>'?' == True   # False
  '!' == True   # False
  all(['?','!']) # True
  </code></pre>
  
  <p>Why is it that when all elements in input are <code>False</code> it returns <code>True</code>? Did I misunderstand its functionality or is there an explanation?</p>