Maison > développement back-end > Tutoriel Python > Quelle est la différence entre `==` et `is` en Python ?

Quelle est la différence entre `==` et `is` en Python ?

Barbara Streisand
Libérer: 2024-12-24 22:41:11
original
636 Les gens l'ont consulté

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

Comprendre la différence entre "==" et "is" en Python

Lors de la comparaison de valeurs en Python, il existe deux opérateurs : "==" et "is". Souvent, il peut sembler que ces opérateurs effectuent la même vérification d’égalité. Cependant, il existe une distinction subtile entre les deux en termes de ce qu'ils évaluent.

Les opérateurs "==" et "is"

  • "==": Teste l'égalité des valeurs. Cela signifie qu'il évalue si deux variables font référence à des objets qui contiennent la même chose. value.
  • "is": Teste l'identité de l'objet. Cela vérifie si deux variables font référence au même objet en mémoire, quelles que soient leurs valeurs.

Égalité des valeurs vs identité de l'objet

Valeur Égalité :

  • Lors de l'utilisation de "==", Python compare les valeurs des objets référencés par les variables.
  • Si les valeurs sont égales, le résultat est True , que les objets soient ou non des instances différentes dans mémoire.

Exemple :

a = 10
b = 10

if a == b:
    print("Yay!")  # Will print "Yay!" as 10 == 10
Copier après la connexion

Identité de l'objet :

  • Lors de l'utilisation de "is", Python compare l'objet identifiants des variables.
  • Si les variables font référence au même objet en mémoire, le résultat est Vrai, même si leurs valeurs sont différent.

Exemple :

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

if a is b:
    print("Yay!")  # Will print "Yay!" as a and b point to the same list
Copier après la connexion

Exceptions à la règle

  • Entiers : Python met en cache de petits objets entiers (jusqu'à 256) pour des raisons de performances. Cela signifie que "is" peut renvoyer True même pour différentes variables entières dans cette plage :
a = 100
b = 100

if a is b:
    print("Yay!")  # Will print "Yay!" due to integer caching
Copier après la connexion
  • Strings : De même, Python met en cache les littéraux de chaîne courants. Cependant, notez que cela ne s'applique pas aux chaînes créées à partir de 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
Copier après la connexion

En résumé, "==" teste l'égalité des valeurs, tandis que "is" teste l'identité de l'objet. Comprendre cette distinction est essentiel pour écrire du code Python correct et efficace.

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