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
Libérer: 2024-12-24 00:14:09
original
790 Les gens l'ont consulté

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
Copier après la connexion

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))
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal