46 lines
1.5 KiB
Markdown
46 lines
1.5 KiB
Markdown
---
|
|
title: What is the difference between Python's equality operators?
|
|
type: question
|
|
tags: python,type,comparison
|
|
authors: maciv
|
|
cover: blog_images/umbrellas.jpg
|
|
excerpt: Python provides two distinct comparison operators for different task. Stop mixing them up using this quick guide.
|
|
---
|
|
|
|
Python provides two very similar equality operators used for comparisons:
|
|
|
|
- The double equals (`==`), also known as the equality operator
|
|
- The `is` keyword, also known as the identity operator
|
|
|
|
Although similar to one another, the double equals (`==`) and the `is` keyword are used for different comparison purposes and yield different results.
|
|
|
|
The main difference between the two is that the `is` keyword checks for reference equality while the double equals (`==`) operator checks for value equality. In other words, `is` will return `True` if two variables both refer to the same object in memory (aka. identity), whereas the double equals operator will evaluate to `True` if the two objects have the same value.
|
|
|
|
Here are some examples to clear up any confusion:
|
|
|
|
```py
|
|
a = [1, 2, 3]
|
|
b = a
|
|
c = [x for x in a]
|
|
|
|
print([
|
|
a == b, # True
|
|
a is b, # True
|
|
a == c, # True
|
|
a is c # False
|
|
])
|
|
|
|
x = 'hi'
|
|
y = x
|
|
z = 'HI'.lower()
|
|
|
|
print([
|
|
x == y, # True
|
|
x is y, # True
|
|
x == z, # True
|
|
x is z # False
|
|
])
|
|
```
|
|
|
|
**Image credit:** [cyril mazarin](https://unsplash.com/@cyril_m?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
|