Understanding the "is" Operator
Despite having the same values, when using the "is" operator, a common misconception is to assume it compares the variable values. However, this operator actually evaluates whether two variables refer to the same object.
In your example, the following code:
x = [1, 2, 3] y = [1, 2, 3]
may lead you to expect the "is" operator to return True, but it returns False:
print(x is y) # False
This is because x and y, despite sharing the same values, are considered two distinct lists. They are different objects, as revealed by their unique identifiers:
print(id(x)) print(id(y)) # Different identifiers indicate different objects
To compare values, use the "==" operator instead:
print(x == y) # True for equal values
Modifying one of the lists will not affect the other, confirming they are separate objects:
x[0] = 4 print(y) # [1, 2, 3] (Unchanged)
Assigning y to x creates a new reference pointing to the same list object:
x = y print(id(x)) print(id(y)) # Same identifiers after assignment print(x is y) # True (Same object)
Remember, the "is" operator tests object identity, while the "==" operator compares values. Use them judiciously to avoid potential confusion in understanding variable referencing behavior.
The above is the detailed content of When Do `is` and `==` Operators Return Different Results in Python?. For more information, please follow other related articles on the PHP Chinese website!