if A vs if A is not None:

The statement

if A:

will call A.__nonzero__() (see Special method names documentation) and use the return value of that function. Here’s the summary:


Called to implement truth value testing and the built-in operation bool(); should return False or True, or their integer equivalents 0 or 1. When this method is not defined, __len__() is called, if it is defined, and the object is considered true if its result is nonzero. If a class defines neither __len__() nor __nonzero__(), all its instances are considered true.

On the other hand,

if A is not None:

compares only the reference A with None to see whether it is the same or not.

Leave a Comment