&gt;Why not do `x == False` then<p>Because it&#x27;s no more explicit than &quot;not x&quot; and because it&#x27;s 5 characters longer.<p>There&#x27;s always a trade off to be made between clarity and verbosity.<p>Judging by the number of bugs I&#x27;ve squashed caused by the developer either not realizing or simply forgetting that (&quot;&quot;, 0, 0.0, midnight, False, [], {}, None) <i>all</i> resolve to false, I&#x27;ve come to believe this is one of those times where the clarity should probably take precedence.<p>You can go to the other extreme by making everything explicitly statically typed which will make your code <i>much</i> more verbose (e.g. see Java). I believe that trade off isn&#x27;t worth it either, despite the small increase in type safety.