When I build small reporting scripts, one common job is deciding whether the script should continue. Does the CSV contain rows? Did the API return data? Did a user enter a value? The Python bool() function gives a clean, reliable answer: True or False.
You will use bool() constantly in if statements, loops, input checks, file-processing scripts, and automation tasks. It looks simple, but understanding Python’s truthy and falsy rules prevents many subtle bugs.
This practical guide explains how the Python bool() function works, what values return True or False, and how to use it in real scripts.
What Is the Python bool() Function?
The Python bool() function converts a value into a Boolean value: either True or False.
A Boolean is a data type that represents a yes-or-no decision. Python uses Boolean values to control program flow. For example, an if statement runs one block of code when its condition is True and another block when it is False.
Here is the basic syntax:
bool(value)
valueis the object you want to test.bool()returnsTruewhen Python considers the value meaningful or non-empty.bool()returnsFalsewhen Python considers the value empty, zero-like, or explicitly false.
Python 3 includes bool() as a built-in function, so you do not need to import any module before using it. If you are new to Python built-in functions, also explore this guide on Python built-in functions.
Python bool() Function With Simple Examples
Let’s start with direct examples. These help you quickly understand what bool() returns for common Python values.
print(bool(True))
print(bool(False))
print(bool(25))
print(bool(0))
print(bool("Hello"))
print(bool(""))
Output:
True
False
True
False
True
False
You can see the output in the screenshot below.

In this example:
TruestaysTrue.FalsestaysFalse.- A non-zero number such as
25becomesTrue. - Zero becomes
False. - A string with text becomes
True. - An empty string becomes
False.
You can use the returned Boolean value directly in conditions. This makes Python code shorter and easier to read.
Python bool() Function and Truthy Values
A truthy value is any value that bool() converts to True. It does not need to literally equal True.
In real projects, I often use truthy checks before processing a downloaded report, a configuration setting, or a list of customer records.
Non-Zero Numbers Return True
Any number other than zero returns True. This includes integers, floating-point numbers, and negative numbers.
monthly_sales = 1250
refund_total = -45
no_sales = 0
discount_rate = 0.0
print(bool(monthly_sales))
print(bool(refund_total))
print(bool(no_sales))
print(bool(discount_rate))
Output:
True
True
False
False
You can see the output in the screenshot below.

Python treats both positive and negative non-zero values as truthy. Only numeric zero is falsy.
Non-Empty Strings Return True
A string is a sequence of characters. Any string containing at least one character returns True, including a space.
customer_name = "Olivia Martin"
status = "Pending"
empty_note = ""
space_only_note = " "
print(bool(customer_name))
print(bool(status))
print(bool(empty_note))
print(bool(space_only_note))
Output:
True
True
False
True
Notice that " " returns True. It contains one space character, so Python does not consider it empty.
If you need to treat a string containing only spaces as empty, use the strip() method first. The strip() method removes spaces from the start and end of a string. You can learn more in this guide on the Python strip() function.
customer_note = " "
print(bool(customer_note))
print(bool(customer_note.strip()))
Output:
True
False
You can see the output in the screenshot below.

The first check returns True because the string contains spaces. The second check returns False because strip() removes those spaces and leaves an empty string.
Non-Empty Lists, Tuples, Sets, and Dictionaries Return True
Python collections return True when they contain one or more items. They return False when they are empty.
sales_reps = ["Emma Johnson", "Liam Carter"]
empty_sales_reps = []
monthly_targets = (5000, 7500)
empty_targets = ()
active_regions = {"California", "Texas"}
empty_regions = set()
customer = {"name": "Noah Davis", "city": "Austin"}
empty_customer = {}
print(bool(sales_reps))
print(bool(empty_sales_reps))
print(bool(monthly_targets))
print(bool(empty_targets))
print(bool(active_regions))
print(bool(empty_regions))
print(bool(customer))
print(bool(empty_customer))
Output:
True
False
True
False
True
False
True
False
This behavior is especially useful when working with API responses, database results, or imported Excel data. Instead of checking a list length manually, you can test the collection directly.
For more list basics, read how to create an empty list in Python and how to check if a dictionary key exists in Python.
Python bool() Function and Falsy Values
A falsy value is any value that bool() converts to False. Python has a small, predictable set of common falsy values.
| Value | bool() result | Why |
|---|---|---|
False | False | It is already a Boolean false value |
None | False | It represents no value |
0 | False | Numeric zero is falsy |
0.0 | False | Floating-point zero is falsy |
"" | False | Empty string |
[] | False | Empty list |
() | False | Empty tuple |
{} | False | Empty dictionary |
set() | False | Empty set |
Run the following complete example:
values = [
False,
None,
0,
0.0,
"",
[],
(),
{},
set()
]
for value in values:
print(f"{repr(value):<10} -> {bool(value)}")
Output:
False -> False
None -> False
0 -> False
0.0 -> False
'' -> False
[] -> False
() -> False
{} -> False
set() -> False
The repr() function displays each value in a developer-friendly format. For example, it shows an empty string as '', which makes it easier to spot in output.
Pro Tip: I have found that
None,0, and""often need different business handling. A missing invoice amount (None) is not the same as an invoice amount of zero (0). Usebool()for a general presence check, but test exact values when the difference matters.
How to Use bool() in Python if Statements
The most common place to use the Python bool() function is inside an if statement. However, Python already performs Boolean conversion automatically inside conditions.
Here is a small reporting script example. The script checks whether it has sales records before creating a summary.
sales_records = [
{"rep": "Mia Wilson", "amount": 1250},
{"rep": "Ethan Brown", "amount": 980}
]
if bool(sales_records):
print("Sales report is ready to process.")
print(f"Records found: {len(sales_records)}")
else:
print("No sales records found.")
Output:
Sales report is ready to process.
Records found: 2
The explicit bool(sales_records) works, but Python developers usually write this shorter version:
sales_records = [
{"rep": "Mia Wilson", "amount": 1250},
{"rep": "Ethan Brown", "amount": 980}
]
if sales_records:
print("Sales report is ready to process.")
print(f"Records found: {len(sales_records)}")
else:
print("No sales records found.")
Output:
Sales report is ready to process.
Records found: 2
Both examples produce the same result. The second version follows common Python style because the if statement automatically calls the equivalent truth-value check.
If you want to build stronger conditional logic, see this guide on the difference between is and == in Python.
Use bool() to Validate User Input
User input often arrives as a string. Before a script saves a customer name, sends an email, or adds a record to a report, confirm that the user actually typed something useful.
This example uses a fixed value so you can run it and get the displayed sample output immediately.
customer_name = " "
if bool(customer_name.strip()):
print(f"Customer name accepted: {customer_name.strip()}")
else:
print("Please enter a customer name.")
Output:
Please enter a customer name.
Here is the same validation pattern with the input() function for a command-line application:
customer_name = input("Enter the customer name: ").strip()
if bool(customer_name):
print(f"Customer name accepted: {customer_name}")
else:
print("Please enter a customer name.")Sample output:
Enter the customer name: Ava Thompson
Customer name accepted: Ava Thompson
The code runs strip() before bool(). This order matters because it rejects blank input and input that contains only spaces.
For a deeper explanation of collecting terminal values, read how to use the Python input() function.
Convert Strings Carefully With bool()
A common beginner mistake is expecting bool("False") to return False. It does not.
Python checks whether the string is empty. The text "False" contains five characters, so it is truthy.
enabled_setting = "False"
disabled_setting = ""
print(bool(enabled_setting))
print(bool(disabled_setting))
Output:
True
False
This issue often appears when a script reads settings from a CSV file, environment variable, JSON file, or web form.
Create a small function that converts known text values into actual Boolean values.
def text_to_bool(value):
normalized_value = value.strip().lower()
return normalized_value in ("true", "yes", "1", "on")
settings = ["true", "False", "YES", "0", "on", "off"]
for setting in settings:
print(f"{setting:<5} -> {text_to_bool(setting)}")
Output:
true -> True
False -> False
YES -> True
0 -> False
on -> True
off -> False
This function normalizes the input by removing outside spaces and converting letters to lowercase. It then returns True only for approved truthy text values.
If you regularly process text values, this guide on how to convert a string to Boolean in Python is a useful next step.
Use bool() in a Small Reporting Script
Let’s use bool() in a realistic automation scenario. Imagine a local Python script that reviews imported sales records before creating a weekly summary.
The script needs to do three checks:
- Confirm that sales records exist.
- Confirm that each record has a representative name.
- Include only records with a positive sales amount.
sales_records = [
{"rep": "Sophia Miller", "amount": 1500},
{"rep": "", "amount": 875},
{"rep": "James Anderson", "amount": 0},
{"rep": "Charlotte Taylor", "amount": 2200}
]
valid_records = []
if bool(sales_records):
for record in sales_records:
has_rep_name = bool(record["rep"].strip())
has_positive_amount = bool(record["amount"])
if has_rep_name and has_positive_amount:
valid_records.append(record)
print(f"Valid sales records: {len(valid_records)}")
for record in valid_records:
print(f'{record["rep"]}: ${record["amount"]}')
Output:
Valid sales records: 2
Sophia Miller: $1500
Charlotte Taylor: $2200
The script excludes the record with an empty representative name. It also excludes James Anderson’s record because the amount is 0, which evaluates to False.
For reporting data, confirm whether zero has a valid business meaning before filtering it out. A zero-dollar sales amount may represent an error, but it may also represent a valid cancelled order.
If you work with larger tabular datasets, you may also find how to filter a pandas DataFrame useful.
bool() With Custom Python Objects
Python lets a class control its own truth value through the special __bool__() method. A class is a blueprint for creating objects, while an object is an individual value created from that blueprint.
This pattern helps when you create reusable classes for business rules.
class ReportFile:
def __init__(self, file_name, row_count):
self.file_name = file_name
self.row_count = row_count
def __bool__(self):
return self.row_count > 0
weekly_report = ReportFile("weekly_sales.csv", 24)
empty_report = ReportFile("weekly_sales.csv", 0)
print(bool(weekly_report))
print(bool(empty_report))
if weekly_report:
print(f"{weekly_report.file_name} contains data.")
Output:
True
False
weekly_sales.csv contains data.
The __bool__() method says that a ReportFile object is true only when its row_count is greater than zero. This makes your calling code expressive and easy to read.
You do not need custom truth rules for most beginner scripts. Use them when a class represents something that clearly has an “available or unavailable” state.
Things to Keep in Mind
- Do not confuse
"False"withFalse: The string"False"is truthy because it contains text; convert external text values with explicit rules. - Handle
Noneseparately when needed:bool(None)returnsFalse, butNonemeans missing data rather than a numeric zero or empty collection. - Strip text input first: Use
value.strip()before testing user-entered text so spaces do not count as valid input. - Avoid unnecessary
bool()calls in conditions: Writeif records:instead ofif bool(records):when you only need a normal truth check. - Do not treat zero as automatically invalid:
0is falsy, but a zero quantity, price, or score may be legitimate in your application. - Keep conversion rules explicit: When reading CSV, JSON, or form data, define exactly which text values mean true or false.
Frequently Asked Questions
What does bool() do in Python?
The Python bool() function converts a value into True or False. It helps you check whether values such as strings, numbers, lists, and dictionaries have a truth value.
What values return False in Python bool()?
Common falsy values include False, None, 0, 0.0, "", [], (), {}, and set(). Most non-empty and non-zero values return True.
Why does bool(“False”) return True in Python?
"False" is a non-empty string, so Python treats it as truthy. The function does not read the meaning of the text; it only checks whether the string contains characters.
Do I need to write bool() inside an if statement?
Usually, no. Python automatically checks truth values inside if, while, and similar statements. Write if items: instead of if bool(items): for cleaner code.
How do I check if a Python list is empty with bool()?
Use bool(my_list), which returns False for an empty list and True for a list with items. In normal code, use if not my_list: to handle an empty list.
What is the difference between bool() and True in Python?
True is a Boolean value. bool() is a built-in function that converts another value into a Boolean value. For example, bool(10) returns True, while bool(0) returns False.
The Python bool() function gives you a simple way to turn values into clear True or False decisions. Start with direct checks for strings and collections, then add explicit conversion rules whenever your script receives text-based settings or user input.
You May Also Like
- How to check if a string is empty in Python
- How to check if an array is empty in Python
- How to validate email addresses in Python
- How to use lambda functions in Python
- How to define a function in Python

Bijay Kumar is an experienced Python and AI professional who enjoys helping developers learn modern technologies through practical tutorials and examples. His expertise includes Python development, Machine Learning, Artificial Intelligence, automation, and data analysis using libraries like Pandas, NumPy, TensorFlow, Matplotlib, SciPy, and Scikit-Learn. At PythonGuides.com, he shares in-depth guides designed for both beginners and experienced developers. More about us.