Il existe deux façons de savoir si elles sont identiques en python. == et est. Les valeurs de retour sont toutes booléennes, mais quelle est la différence? C'est quelque chose qui m'intéresse.
En termes simples, il compare l'emplacement mémoire des deux, tandis que == cherche simplement à voir s'ils ont la même valeur. C'est tout.
Jetons un œil au code (lancez python3 dans le terminal)
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
Je vais expliquer. Si vous attribuez également une liste à a et a à b, vous pouvez voir qu'ils citent à partir du même emplacement de mémoire. Par conséquent, c'est vrai avec est. Utilisez ensuite l'opération de chaîne [:] pour dupliquer la liste. Ensuite, la copie sera terminée, et ce sera différent en mémoire. Par conséquent, c'est faux. à propos de ça.
Quand tu regardes réellement l'ID
>>> id(a)
4364243328
>>>
>>> id(b)
4364202696
C'est vrai. Puisqu'il est faux, il est naturel que l'identifiant soit différent.
Cependant, il existe des exceptions comme le code ci-dessous.
>>> a = 256
>>> b = 256
>>> a is b
True
>>> a == b
True
>>>
>>> a = 1000
>>> b = 10**3
>>> a == b
True
>>> a is b
False
Qu'est-ce que ça veut dire? Bien que les numéros a et b soient attribués séparément, les résultats sont différents entre le haut et le bas. Eh bien, je vais vous expliquer. python fait différentes choses pour les petits entiers tels que 256 pour améliorer les performances. Il semble que ces entiers spéciaux soient stockés au même endroit avec le même identifiant. Ensuite, en 256, ce sera le même True indépendamment du fait que vous utilisiez is ou ==, et pas pour les grands nombres tels que 1000.
C'était ça. Qu'est-ce que tu penses. Si vous avez des suggestions, veuillez le faire.
à la prochaine
Recommended Posts