Values of different types can sometimes be compared, but Python does not allow every comparison or arithmetic operation between unrelated types.
Understanding the Concept
Numeric types such as int and float can usually be compared by their numerical values. A bool also participates in certain numeric operations because bool is a subclass of int, although using booleans as counts is often confusing. Equality comparisons between unrelated objects may simply be False, while ordering comparisons such as < between a string and an integer normally raise TypeError. Avoid relying on implicit conversions that Python does not perform.
When and Why You Would Use This
Compare an integer and float that represent the same number, then contrast that with a string containing the same digits. Equality and ordering do not always have the same compatibility rules.
Practical Example
whole_quantity = 5
decimal_quantity = 5.0
quantity_text = "5"
print(whole_quantity == decimal_quantity)
print(whole_quantity == quantity_text)
Understanding the Example
The output is True and False. The numeric comparison treats 5 and 5.0 as equal values, while the string "5" remains text. Trying whole_quantity < quantity_text raises TypeError.
Example Output
True
False
Try It Yourself
Compare 3, 3.0, and "3" with equality. Then investigate what happens when comparing their types explicitly.
Common Beginner Mistakes
- Assuming a numeric-looking string is automatically converted when compared with int.
- Expecting all types to support ordered comparisons.
- Using == to check whether two objects have identical types instead of equal values.
Key Takeaways
- Different numeric types can often compare by value.
- Strings are not automatically numeric values.
- Unsupported ordered comparisons raise TypeError.