Why does (not None) == True evaluate to True?
<p>This tripped me up recently in a piece of Python code - I was checking if any of the values in a list were False, so I used something like:</p>

<pre><code>if any(not v for v in values):
    # Do something...
</code></pre>

<p>However, I forgot that there were <code>None</code> values in the list, so I kept getting confusing outputs until I remembered to check for that first. That got me wondering though - what's the rationale behind <code>(not None) == True</code>? <code>None == False</code> evaluates to <code>False</code>, so it's not reflexive, and it's not immediately clear to me why the logical negation of the <code>None</code> object should evaluate to <code>True</code>.</p>