Maison >développement back-end >Tutoriel Python >L'opérateur « est » de Python : identité d'objet ou égalité de valeur ?

L'opérateur « est » de Python : identité d'objet ou égalité de valeur ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-24 00:14:09770parcourir

Python's

Les nuances de l'opérateur "is" de Python : identité d'objet vs égalité de valeur

L'opérateur "is" en Python a été une source de confusion pour de nombreux développeurs. Bien qu’il semble trompeur de comparer les valeurs des variables, il évalue en réalité l’identité de l’objet. Pour comprendre ce concept, approfondissons la nature de l'opérateur « est ».

Identité d'objet vs égalité de valeur

En Python, les variables représentent des références à des objets en mémoire. L'opérateur "est" vérifie si deux variables font exactement référence au même objet, quelles que soient leurs valeurs. D'autre part, l'opérateur "==" compare les valeurs des objets pointés par deux variables.

Considérez l'extrait de code suivant :

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

print(x is y)  # False

Dans cet exemple, "x " et " y " sont deux variables distinctes affectées à des listes avec des valeurs identiques. Cependant, l'opérateur "is" renvoie False car "x" et "y" ne pointent pas vers le même objet en mémoire.

La fonction "id()"

Pour mieux comprendre le concept d'identité d'objet, nous pouvons utiliser la fonction "id()". Cette fonction renvoie l'identifiant unique d'un objet en mémoire. Par exemple, si on imprime les identifiants de "x" et "y" en utilisant le code suivant :

print(id(x))
print(id(y))

On observerait que "x" et "y" ont des identifiants différents, confirmant qu'ils sont distincts objets en mémoire.

Réaffectation des variables

Si nous réaffectons "y" à "x", les deux variables seront pointez maintenant vers le même objet :

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

print(x is y)  # True

Dans ce cas, "x" et "y" font référence au même objet sous-jacent, et donc l'opérateur "is" renvoie True.

Conclusion

Il est crucial de se rappeler la distinction entre l'identité de l'objet et l'égalité des valeurs en Python. L'opérateur "is" évalue l'identité de l'objet, tandis que l'opérateur "==" compare les valeurs des objets. Cette compréhension est essentielle pour éviter les erreurs logiques lorsque vous travaillez avec des variables et des objets dans le code Python.

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