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

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

不言
Libérer: 2018-10-29 17:26:00
avant
2874 Les gens l'ont consulté

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

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

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

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!

Étiquettes associées:
source:csdn.net
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal