Maison >développement back-end >Tutoriel Python >Pourquoi « is None » est-il préféré à « == None » en Python ?

Pourquoi « is None » est-il préféré à « == None » en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 20:29:01244parcourir

Why is

Comprendre Python Aucune Comparaison : "is" vs. ==

Les développeurs Python se posent souvent la question de savoir s'il faut utiliser "is" ou == lors de la comparaison d'une variable à Aucun. Bien que les deux options aboutissent à une syntaxe valide, l'approche privilégiée dépend de la comparaison envisagée.

Identité d'objet contre égalité

La distinction clé réside dans la nature de la comparaison : identité ou égalité de l'objet.

  • Identité de l'objet (est) : compare si deux variables font référence exactement au même objet en mémoire.
  • Égalité (==) : compare le valeurs de deux objets.

Dans le cas de None, il n'existe qu'un seul objet de ce type en Python. Ainsi, my_var is None vérifie si my_var fait référence au même objet None.

Pourquoi None est-il préféré ?

Alors que les deux sont None et == None sont une syntaxe valide, None est considéré comme plus explicite et moins sujet aux erreurs.

Considérez la situation suivante :

class Negator(object):
    def __eq__(self, other):
        return not other

thing = Negator()
print(thing == None)  # True
print(thing is None)  # False

Dans cet exemple, la classe Negator remplace l'opérateur == pour toujours renvoie le contraire de l'argument. En conséquence, thing == None est évalué à True, indiquant une égalité en valeur. Cependant, thing is None est correctement évalué à False, indiquant que thing et None ne sont pas le même objet.

Conclusion

Pour vérifier l'identité de l'objet, y compris les comparaisons avec Aucune, c’est l’approche privilégiée. Il garantit la clarté et évite toute ambiguïté potentielle causée par des opérateurs d’égalité remplacés. N'oubliez pas que c'est vérifie l'identité, tandis que == vérifie l'égalité.

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!

Déclaration:
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