If I need different behaviour between &quot;value not provided&quot; and &quot;there aren&#x27;t any of that thing&quot;, I would perform both checks (if x is None:&#x2F;if not x:).<p>The idiomatic way to check for an empty list is &quot;if not mylist&quot;, but I still enjoy the fact that I can check for &quot;if this is anything other than a thing I care about, do this&quot; with one check.<p>Not to mention that doing anything else would violate duck typing. You don&#x27;t care if the thing passed is an empty list, you care if it&#x27;s falsy. If you had a &quot;reverse()&quot; function that checked for an empty list and raised an exception, you&#x27;d get in trouble when someone passed an empty tuple. What you care for is whether the object is iterable or not, not whether it&#x27;s a list.