Maison > développement back-end > Tutoriel Python > Comparaison Python None : quand dois-je utiliser 'is' ou '==' ?

Comparaison Python None : quand dois-je utiliser 'is' ou '==' ?

Susan Sarandon
Libérer: 2024-11-11 14:01:03
original
792 Les gens l'ont consulté

Python None Comparison: When Should I Use

Comparaison de Python None : quand utiliser "is" vs. ==

Lorsque vous travaillez avec la valeur None en Python, les développeurs utilisent souvent "is" et "==" à des fins de comparaison. Bien que les deux approches soient syntaxiquement valides, le choix recommandé dépend du but recherché de la comparaison.

En général, « est » est préféré lors de la vérification de l'identité d'un objet, c'est-à-dire si deux variables font référence exactement au même objet en mémoire. . En revanche, "==" vérifie l'égalité, qui peut varier en fonction de l'implémentation de l'objet.

Considérez la classe personnalisée suivante qui remplace la méthode eq pour définir l'équivalence différemment de l'identité de l'objet :

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

thing = Negator()
print(thing == None)    # True
print(thing is None)    # False
Copier après la connexion

Dans cet exemple, "==" renvoie True car la méthode eq de Negator remplace le comportement par défaut. Cependant, "is" renvoie False car les deux variables ne font pas référence au même objet.

Lorsqu'il s'agit de classes personnalisées où l'identité de l'objet n'est pas critique, "==" est le choix approprié pour vérifier l'égalité. Par exemple, si vous souhaitez comparer le contenu de deux listes, vous utiliserez "==":

lst = [1,2,3]
lst == lst[:]  # This is True since the lists are "equivalent"
lst is lst[:]  # This is False since they're actually different objects
Copier après la connexion

En revanche, si vous souhaitez vérifier spécifiquement si deux variables pointent exactement vers le même objet dans mémoire, "is" est l'opérateur de comparaison préféré. Ceci est particulièrement important lorsque vous travaillez avec des objets mutables, tels que des dictionnaires ou des listes, où la modification d'une instance peut affecter l'autre s'il s'agit du même objet :

a = [1, 2, 3]
b = a
b.append(4)
print(a, b)  # Output: [1, 2, 3, 4], [1, 2, 3, 4]

c = [1, 2, 3]
d = c
d is c  # True (same object in memory)
Copier après la connexion

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal