Maison >développement back-end >Tutoriel Python >En Python, quand puis-je compter sur l'opérateur is pour les tests d'identité ?
is opérateur est un opérateur d’identité en Python. Il est utilisé pour tester l'identité du sujet. Regardons un exemple −
x = ["Paul","Mark"] y = ["Paul","Mark"] z = x # Python IS operator print(x is z)
True
Supposons que nous considérions un autre exemple où le test a est b est équivalent à -
id(a) == id(b)
La propriété clé du test d'identité est que l'objet est toujours identique à lui-même, a is a renvoie toujours True. Les tests d'identité sont généralement plus rapides que les tests d'égalité. Contrairement aux tests d'égalité, les tests d'identité sont garantis de renvoyer une valeur booléenne True ou False.
Cependant, les tests d'identité ne peuvent remplacer les tests d'égalité que si l'identité de l'objet est assurée. Il existe généralement trois situations dans lesquelles l'identité peut être garantie :
L'affectation crée un nouveau nom mais ne modifie pas l'identité de l'objet.
Après avoir attribué nouveau = ancien, il est garanti que nouveau est ancien.
Mettre un objet dans un conteneur qui stocke une référence à l'objet ne change pas l'identité de l'objet.
Après l'affectation de la liste, s[0] = x, garantit que s[0] vaut x.
Si un objet est un singleton, cela signifie qu'une seule instance de l'objet peut exister. Après avoir attribué a = None et b = None, vous pouvez vous assurer que a et b sont égaux car None est un singleton.
N'oubliez pas que les tests d'identité ne doivent pas être utilisés pour vérifier des constantes telles que int et str qui ne sont pas garanties comme étant des singletons. Dans l'exemple ci-dessous, nous obtenons uniquement False -
Testons sur des éléments entiers -
a = 1000 b = 500 c = b + 500 print(a is c)
False
Un exemple de test d'identité de chaîne −
a = 'Amit' b = 'Am' c = b + 'it' print(a is c)
False
En Python, les listes sont mutables. Les nouvelles instances de conteneurs mutables ne sont jamais les mêmes ; le test d'identité renvoie donc False -
.a = [10, 20, 30] b = [10, 20, 30] print(a is b)
False
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!