Home >Backend Development >Python Tutorial >What's the Difference Between `==` and `is` in Python?

What's the Difference Between `==` and `is` in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-12-24 22:41:11607browse

What's the Difference Between `==` and `is` in Python?

Understanding the Difference Between "=='' and "is'' in Python

When comparing values in Python, there are two common operators: "==" and "is." Often, it may seem that these operators perform the same equality check. However, there is a subtle distinction between the two in terms of what they evaluate.

The "==" and "is'' Operators

  • "==": Tests for value equality. This means that it evaluates if two variables refer to objects that contain the same value.
  • "is": Tests for object identity. This checks if two variables refer to the same object in memory, regardless of their values.

Value Equality vs. Object Identity

Value Equality:

  • When using "==", Python compares the values of the objects being referenced by the variables.
  • If the values are equal, the result is True, regardless of whether the objects are different instances in memory.

Example:

a = 10
b = 10

if a == b:
    print("Yay!")  # Will print "Yay!" as 10 == 10

Object Identity:

  • When using "is," Python compares the object identifiers of the variables.
  • If the variables refer to the same object in memory, the result is True, even if their values are different.

Example:

a = [1, 2, 3]
b = a

if a is b:
    print("Yay!")  # Will print "Yay!" as a and b point to the same list

Exceptions to the Rule

  • Integers: Python caches small integer objects (up to 256) for performance reasons. This means that "is" may return True even for different integer variables within this range:
a = 100
b = 100

if a is b:
    print("Yay!")  # Will print "Yay!" due to integer caching
  • Strings: Similarly, Python caches common string literals. However, note that this does not apply to strings created from variables:
a = "a"
b = "a"

if a is b:
    print("Yay!")  # Will print "Yay!" as string literals are cached

b = "aa"

if a is b:
    print("Nay!")  # Will not print as b is a different object

In summary, "==" tests for value equality, while "is" tests for object identity. Understanding this distinction is essential for writing correct and efficient Python code.

The above is the detailed content of What's the Difference Between `==` and `is` in Python?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn