Syntaxe
Paramètres
Nom |
Description |
objet1 |
Ce paramètre permet d'indiquer l'objet source à vérifier. |
objet2 |
Ce paramètre permet de vérifier si l'objet en est descendant. |
Description
Ce mot réservé permet d'indiquer une correspondance avec l'ensemble spécifié.
Remarques
- Le mot clef is compare l'identité de deux objets, et non leur valeur : Cela signifie que a is b est vrai seulement si a et b pointent vers le même
objet en mémoire. Il ne faut donc pas le confondre avec ==, qui compare les valeurs des objets.
- L'opérateur is est souvent utilisé pour tester contre None : Par convention et pour éviter des surprises, on écrit if variable is None plutôt
que == None. Cela garantit qu'on vérifie bien l'identité exacte de l'objet None.
- is peut donner des résultats inattendus si on ne comprend pas l'interning de certains objets : Par exemple, des petits entiers ou certaines chaînes
peuvent être réutilisés en mémoire. Ainsi, a = 256; b = 256; a is b peut retourner True, mais pas toujours avec de plus grands nombres.
- Utiliser is avec des objets mutables peut provoquer des erreurs logiques : Deux listes ayant les mêmes éléments ne sont pas forcément identiques en
mémoire : [1] is [1] retourne False. Il faut donc réserver is pour les comparaisons d'identité strictes, pas de contenu.
- Le test is est utile pour vérifier si deux variables référencent un singleton : Par exemple, True, False, et None sont des singletons en Python.
Vérifier leur présence avec is est plus sûr et plus rapide.
- L'utilisation de is avec des types personnalisés peut être pertinente dans certains cas : Par exemple, lorsqu'on travaille avec un cache ou des
objets uniques dans un programme, on veut savoir si deux références sont exactement les mêmes. Le mot clef is garantit ce type de vérification.
- L'opérateur is n'est pas surchargé comme == : Même si un objet redéfinit la méthode __eq__, cela n'a aucun effet sur le résultat de is. Cela
permet de s'assurer qu'on ne dépend d'aucune logique personnalisée pour la comparaison.
- L'opposé de is est is not, qui permet de vérifier que deux objets sont distincts : Par exemple, if a is not b: est équivalent à not (a is b). Cela améliore la
lisibilité du code, surtout dans les conditions explicites.
Dernière mise à jour : Mercredi, le 16 mai 2018