When we have two or more variables, it is often necessary to write code that makes comparisons between them.

When comparing two objects it is important to make a distinction between value and identity:

  • they can have different value and different identities
  • they can have the same value, but have separate identities
  • they can have the same value and the same identity

Let’s have a look at how to ask these questions in Python:

Comparing values

Let’s start by storing a few numbers in variables:

a = 12
b = 20
c = 20

We can now compare these values in different ways. The result of a comparison expression is always a boolean value.

Are the numbers equal? This question is asked with the == operator:

print(a == b)
>>> False
print(b == c)
>>> True

Are the numbers different (not equal)? This question is asked with the != operator:

print(a != b)
>>> True
print(b != c)
>>> False

Is the first number bigger than the second? This question is asked with the > operator:

print(a > b)
>>> False
print(b > c)
>>> False

Is the first number smaller than the second? This question is asked with the < operator:

print(a < b)
>>> True
print(b < c)
>>> False

Is the first number bigger than or equal to the second? This question is asked with the >= operator:

print(a >= b)
>>> False
print(b >= c)
>>> True

Is the first number smaller than or equal to the second? This question is asked with the <= operator:

print(a <= b)
>>> True
print(b <= c)
>>> True

Comparing identity

Besides comparing the value of two objects, we can also compare their identity.

Two objects can have the same value and still have different identities – they are not the same thing. For example:

The integer 10 and the decimal number 10.0 have the same nummerical value:

print(10 == 10.0)
>>> True

To compare the identity between the objects we use the logical operator is:

print(10 is 10.0)
>>> False

As we can see, the two objects have different identities – one is a float, and the other is an int.

Testing ‘truthiness’

Every value in every data type in Python can be converted to a boolean. Empty objects are usually converted to False, while anything else is converted to True.

Here are some examples with different data types:

# string
print(bool('hello'))
print(bool(''))
>>> True
>>> False
# list
print(bool(['a', 'b', 'c']))
print(bool([]))
>>> True
>>> False
# tuple
print(bool((1, 2, 3)))
print(bool(()))
>>> True
>>> False
# dict
print(bool({'A' : 1, 'B' : 2}))
print(bool({}))
>>> True
>>> False
# integer
print(bool(100))
print(bool(0))
>>> True
>>> False
# float
print(bool(1.1))
print(bool(0.0))
>>> True
>>> False
# None
print(bool(None))
>>> False
Last edited on 23/01/2018