Evaluating expression to be True or False will help us control the flow of our program.
| type | truthiness | |
|---|---|---|
int |
0 is False, all other numbers are True (including negative) |
|
containers - list, tuple, set, dict |
empty container evaluates to False, container with items evaluates to True) |
|
None |
False |
We talked about boolean types, True and False earlier. True and False are keywords in Python, so make sure you don’t name your variables the same thing.
>>> True
True
>>> False
False
Sometimes the truth is obvious. For example 3 < 5 is always True. Other times, in Python, the truth value might surprise you. Let’s review. First, let’s start with an expression we know is always True.
>>> 3 < 5
True
Tip: If you want to test your assumptions about an expression that returns True or False, you can pass it into the constructor for booleans: bool(expression).
In Python, the integer 0 is always False, while every other number, including negative numbers, are True. In fact, under the hood, booleans inherit from integers.
>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True
Empty sequences in Python always evaluate to False, including empty strings.
>>> bool("") # String
False
>>> bool([]) # Empty List
False
>>> bool(set()) # Empty Set
False
>>> bool({}) # Empty Dictionary
False
>>> bool(()) # Empty Tuple
False
Sequences with at least one value will evaluate to True.
>>> bool("Hello") # String
True
>>> bool([1]) # List
True
>>> bool({1}) # Set
True
>>> bool({1: 1}) # Dictionary
True
>>> bool((1,)) # Tuple
True
None The None type in Python represents nothing. No returned value. It shouldn’t come as a surprise that the truthiness of None is False.
>>> bool(None)
False
None is commonly used as a placeholder to mean “I haven’t set this value yet.” Since empty strings and sequence evaluate to False, we need to be very careful when we’re checking if a sequence has been declared or not, or if it’s empty. We’ll review this concept again when talking about if statements later in the day.
>>> my_name = None
>>> bool(my_name)
False
>>> my_name = ""
>>> bool(my_name)
False
>>> my_list = None
>>> bool(my_list)
False
>>> my_list = []
>>> bool(my_list)
False