Search code examples
pythonpython-3.xtruthiness

What are the true and false criteria for a python object?


I have seen the following cases:

>>> def func(a):
...     if a:
...         print("True")
...
>>> a = [1, 2, 3]
>>> func(a)
True
>>> a == True
False

Why does this difference occur?


Solution

  • All objects1 in Python have a truth value:

    Any object can be tested for truth value, for use in an if or while condition or as operand of the Boolean operations below. The following values are considered false:

    • None

    • False

    • zero of any numeric type, for example, 0, 0.0, 0j.

    • any empty sequence, for example, '', (), [].

    • any empty mapping, for example, {}.

    • instances of user-defined classes, if the class defines a __bool__() or __len__() method, when that method returns the integer zero or bool value False.

    All other values are considered true — so objects of many types are always true.


    1 … unless they have a __bool__() method which raises an exception, or returns a value other than True or False. The former is unusual, but sometimes reasonable behaviour (for example, see the comment by user2357112 below); the latter is not.