Maison >développement back-end >Tutoriel Python >Quand les opérateurs `is` et `==` renvoient-ils des résultats différents en Python ?

Quand les opérateurs `is` et `==` renvoient-ils des résultats différents en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-12 14:58:21905parcourir

When Do `is` and `==` Operators Return Different Results in Python?

Comprendre l'opérateur « est »

Malgré les mêmes valeurs, lors de l'utilisation de l'opérateur « est », une idée fausse courante est de supposer il compare les valeurs des variables. Cependant, cet opérateur évalue en réalité si deux variables font référence au même objet.

Dans votre exemple, le code suivant :

x = [1, 2, 3]
y = [1, 2, 3]

peut vous amener à vous attendre à ce que l'opérateur "is" renvoie Vrai, mais cela renvoie Faux :

print(x is y)  # False

En effet, x et y, bien qu'ils partagent les mêmes valeurs, sont considérés comme deux listes distinctes. Ce sont des objets différents, comme le révèlent leurs identifiants uniques :

print(id(x))
print(id(y))  # Different identifiers indicate different objects

Pour comparer les valeurs, utilisez plutôt l'opérateur "==" :

print(x == y)  # True for equal values

La modification d'une des listes ne sera pas affecter l'autre, confirmant qu'il s'agit d'objets distincts :

x[0] = 4
print(y)  # [1, 2, 3] (Unchanged)

Attribuer y à x crée une nouvelle référence pointant vers la même liste object :

x = y
print(id(x))
print(id(y))  # Same identifiers after assignment
print(x is y)  # True (Same object)

N'oubliez pas que l'opérateur "is" teste l'identité de l'objet, tandis que l'opérateur "==" compare les valeurs. Utilisez-les judicieusement pour éviter toute confusion potentielle dans la compréhension du comportement de référencement des variables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn