Python bool() Function Explained
The bool() function converts a value to either True or False.
This is useful when you want to check whether a value counts as "true" or "false" in Python. Beginners often use bool() to understand how values behave in if statements and other conditions.
Quick answer
print(bool(0))
print(bool(1))
print(bool(""))
print(bool("hello"))
print(bool([]))
print(bool([1, 2, 3]))
Expected output:
False
True
False
True
False
True
Use bool(value) to convert a value to True or False. Empty and zero-like values become False. Most other values become True.
What bool() does
bool() converts a value into a Boolean result.
A Boolean value can only be one of these:
TrueFalse
This is especially useful in conditions such as if statements.
You can also call bool() with no argument:
print(bool())
Output:
False
If you are new to Boolean values, see what a Boolean means in Python.
bool() syntax
The basic syntax is:
bool(value)
The value can be many different types, such as:
- numbers
- strings
- lists
- tuples
- dictionaries
- sets
- other objects
If you do not pass any value, Python returns False.
Example:
print(bool(10))
print(bool("Python"))
print(bool())
Output:
True
True
False
Values that become False
Some values are treated as false in Python. These are often called falsy values.
Common examples:
00.0""[](){}set()None
Example:
print(bool(0))
print(bool(0.0))
print(bool(""))
print(bool([]))
print(bool(()))
print(bool({}))
print(bool(set()))
print(bool(None))
Output:
False
False
False
False
False
False
False
False
Values that become True
Many values become True. These are often called truthy values.
Common examples:
- non-zero numbers
- non-empty strings
- non-empty lists
- non-empty tuples
- non-empty sets
- non-empty dictionaries
Example:
print(bool(5))
print(bool(-2))
print(bool("hello"))
print(bool([1, 2, 3]))
print(bool((1, 2)))
print(bool({"name": "Sam"}))
Output:
True
True
True
True
True
True
One important example is this:
print(bool("False"))
Output:
True
Even though the text says "False", it is still a non-empty string, so Python treats it as True.
Using bool() in real code
You can use bool() in simple programs to make your code easier to understand.
Check whether a list has items
items = [10, 20, 30]
print(bool(items))
Output:
True
With an empty list:
items = []
print(bool(items))
Output:
False
Check whether a string is empty
name = ""
print(bool(name))
Output:
False
name = "Mia"
print(bool(name))
Output:
True
Convert a result before printing or storing it
username = "alex"
has_name = bool(username)
print(has_name)
Output:
True
This can be useful when you want a clear True or False value instead of checking the original value later.
Help understand conditions
Python already checks truthy and falsy values in conditions.
numbers = [1, 2, 3]
if numbers:
print("The list is not empty")
Output:
The list is not empty
To learn more about conditions, see Python if statements explained.
Important beginner warning
A very common mistake is expecting bool() to understand the meaning of text.
It does not do that.
bool("False") returns True
print(bool("False"))
Output:
True
bool("0") returns True
print(bool("0"))
Output:
True
This happens because both values are non-empty strings.
bool() does not read the word and decide what it means. It only checks whether the value is empty or not.
This matters a lot when working with input(), because input() always returns a string.
Example:
user_value = input("Enter True or False: ")
print(bool(user_value))
If the user types False, the result will still be True, because "False" is not empty.
When you may not need bool()
In many if statements, you do not need to write bool() yourself.
Python already checks truthiness for you.
Instead of this:
my_list = [1, 2, 3]
if bool(my_list):
print("List has items")
You can simply write:
my_list = [1, 2, 3]
if my_list:
print("List has items")
Both examples work.
Using bool() is still helpful when:
- you are learning how truthy and falsy values work
- you want to store a real
TrueorFalsevalue - you want to print the result clearly while debugging
If you want to inspect the type of a value, see Python type() function explained.
Common mistakes
Here are some common beginner mistakes with bool().
Expecting bool("False") to return False
This is one of the most common problems.
print(bool("False"))
Output:
True
Why? Because "False" is a non-empty string.
If you want to check the actual text, compare the string directly:
value = "False"
print(value == "True")
Output:
False
Using strings from input() and expecting automatic yes/no conversion
input() returns text, not real Boolean values.
value = input("Enter yes or no: ")
print(bool(value))
If the user types no, the result is still True because "no" is not empty.
A safer approach is to clean the text and compare it:
value = input("Enter yes or no: ").strip().lower()
print(value == "yes")
This gives True only when the user enters yes.
Confusing empty values with the actual value False
These are different:
False0""[]None
They all become False with bool(), but they are not the same value.
You can check the type if needed:
value = []
print(type(value))
print(bool(value))
Output:
<class 'list'>
False
Using {} expecting an empty set
In Python, {} creates an empty dictionary, not an empty set.
print(type({}))
Output:
<class 'dict'>
To make an empty set, use:
print(type(set()))
Output:
<class 'set'>
Helpful debugging checks
If bool() gives a result you did not expect, these checks can help:
print(bool(value))
print(type(value))
print(value)
print(value == "True")
print(value.strip().lower())
These are useful for finding out:
- what the value really is
- whether it is a string
- whether it contains spaces
- whether it matches the text you expected
This is especially helpful when handling user input. You may also want to read how to convert user input to numbers in Python.
FAQ
What does bool() return in Python?
It returns either True or False.
What happens if I call bool() with no argument?
It returns False.
Why does bool("False") return True?
Because the string is not empty. Non-empty strings are True.
Does bool(0) return False?
Yes. Zero values are False.
Should I use bool() inside every if statement?
No. Python already treats many values as True or False in conditions.