What is the practical application of bool() in Python?
It lets you convert any Python value to a boolean value.
Sometimes you want to store either True
or False
depending on another Python object. Instead of:
if python_object:
result = True
else:
result = False
you simply do:
result = bool(python_object)
How Python objects are converted to a boolean value, all depends on their truth value. Generally speaking, None
, numeric 0 and empty containers (empty list, dictionary, set, tuple, string, etc.) are all False
, the rest is True
.
You use it whenever you need an explicit boolean value. Say you are building an object tree, and you want to include a method that returns True
if there are children in the tree:
class Tree(object):
def __init__(self, children):
self.children = children
def has_children(self):
return bool(self.children)
Now Tree().has_children()
will return True
when self.children
is not empty, False
otherwise.
To understand what bool()
does we need to first understand the concept of a boolean.
A boolean variable is represented by either a 0 or 1 in binary in most programming languages. A 1 represents a "True" and a 0 represents a "False"
The number 1 is different from a boolean value of True in some respects. For example, take the following code:
>>> 1 is True
False
Notice that 1 is different than True according to Python. However:
>>> bool(1) is True
True
When we use the bool()
function here, we convert 1 to a boolean. This conversion is called "casting". Casting 1 to boolean returns the value of "True".
Most objects can be cast to a boolean value. From my experience, you should expect every standard object to evaluate to True unless it is 0, None, False or an empty iterable (for example: "", [], or {}). So as an example:
>>> bool({})
False
>>> bool({"":False})
True
>>> bool(None)
False
>>> bool("")
False
>>> bool("hello")
True
>>> bool(500)
True
>>> bool(0)
False
>>> bool(False)
False
>>> bool(-1)
True
Lastly, a boolean prints as either "True" or "False"
>>> print bool(1)
True