Maison > Article > développement back-end > Quelle est la différence entre is et == en Python ? Introduction à la différence entre is et == en Python
Le contenu de cet article concerne la différence entre is et == en Python ? L'introduction de is et == en Python a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer, j'espère que cela vous sera utile.
Il existe de nombreux opérateurs en Python Aujourd'hui, nous allons parler de la différence essentielle d'application entre les opérateurs is et ==.
Avant de parler de la différence entre les deux opérateurs is et ==, vous devez d'abord connaître les trois éléments de base contenus dans les objets en Python, à savoir : id (identité), type (type de données) et valeur (valeur ).
Est et == compare et juge des objets, mais le contenu de la comparaison et du jugement d'objets est différent. Jetons un coup d'œil aux différences spécifiques.
== La différence entre l'opérateur de comparaison et son opérateur d'identité
== est un opérateur de comparaison parmi les opérateurs standard Python, utilisé pour comparer et déterminer si les valeurs de deux objets sont l'égalité, par exemple, la comparaison entre les deux chaînes suivantes :
Exemple 1.
>>> a = 'cheesezh' >>> b = 'cheesezh' >>> a == b True
est également appelée opérateur d'identité. Cet opérateur compare pour déterminer l'unicité entre les objets. c'est-à-dire si l'identifiant est le même. En comparant les listes suivantes, vous comprendrez comment fonctionne l'opérateur d'identité is :
>>> x = y = [4,5,6] >>> z = [4,5,6] >>> x == y True >>> x == z True >>> x is y True >>> x is z False >>> >>> print id(x) 3075326572 >>> print id(y) 3075326572 >>> print id(z) 3075328140
Les trois premiers exemples sont tous vrais, alors pourquoi le dernier est-il faux ? Les valeurs de x, y et z sont les mêmes, il n'y a donc aucun problème à ce que les deux premiers soient vrais. Quant à savoir pourquoi le dernier est faux, vous comprendrez si vous regardez les identifiants des trois objets.
Regardons un autre exemple. Dans l'exemple 3, (a==b) de a et b du même type est tous deux vrai, mais (a is b) ne l'est pas.
>>> a = 1 #a和b为数值类型 >>> b = 1 >>> a is b True >>> id(a) 14318944 >>> id(b) 14318944 >>> a = 'cheesezh' #a和b为字符串类型 >>> b = 'cheesezh' >>> a is b True >>> id(a) 42111872 >>> id(b) 42111872 >>> a = (1,2,3) #a和b为元组类型 >>> b = (1,2,3) >>> a is b False >>> id(a) 15001280 >>> id(b) 14790408 >>> a = [1,2,3] #a和b为list类型 >>> b = [1,2,3] >>> a is b False >>> id(a) 42091624 >>> id(b) 42082016 >>> a = {'cheese':1,'zh':2} #a和b为dict类型 >>> b = {'cheese':1,'zh':2} >>> a is b False >>> id(a) 42101616 >>> id(b) 42098736 >>> a = set([1,2,3])#a和b为set类型 >>> b = set([1,2,3]) >>> a is b False >>> id(a) 14819976 >>> id(b) 14822256
Comme le montre l'exemple 3, a est b est vrai uniquement lorsqu'il est de type numérique et de type chaîne. Lorsque a et b sont de type tuple, liste, dict ou ensemble, a est. b est b est faux.
Essayez-le vous-même et voyez si leurs identifiants seront égaux lorsque a=257 et b=257. En fait Python Afin d'optimiser la vitesse, un petit pool d'objets entiers est utilisé pour éviter les applications fréquentes et la destruction de l'espace mémoire pour les entiers. La définition Python des petits entiers est [-5, 257), ce n'est que si les nombres sont compris entre -5 et 256 que leurs identifiants seront égaux. S'ils dépassent cette plage, cela ne fonctionnera pas. De la même manière, les objets chaîne n'auront pas non plus un pool de tampons similaire. égaux s’ils dépassent la plage.
En général, a est b est vrai uniquement lorsque les types numériques et chaînes sont dans le pool d'objets général, sinon lorsque a et b sont int, str, tuple, list, lorsqu'il s'agit d'un type dict ou set, a is b sont tous deux faux.
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!