Je suis récemment tombé sur cette syntaxe, je ne connais pas la différence.
J'apprécierais que quelqu'un puisse me dire la différence.
Je suis récemment tombé sur cette syntaxe, je ne connais pas la différence.
J'apprécierais que quelqu'un puisse me dire la différence.
La réponse est expliquée aquí .
Je cite :
Une classe est libre d'implémenter comparaison de la manière qu'elle souhaite et peut choisir de faire la comparaison contre Aucun ne signifie quelque chose (ce qui est en fait est logique ; si quelqu'un vous disait d'implémenter d'implémenter l'objet None à partir de à partir de rien, comment feriez-vous autrement pour qu'il comparer True à lui-même).
En pratique, il n'y a pas beaucoup de différence puisque les opérateurs de comparaison personnalisés sont rares. Mais vous devriez utiliser is None
en règle générale.
C'était une lecture intéressante (et courte). Et quelques informations utiles sur le is
v. ==
.
@myusuf3 : >>> timeit.Timer('None est None').timeit() | 0.225 | >>> timeit.Timer('None == None').timeit() | 0.328
Dans ce cas, ils sont les mêmes. None
est un objet singleton (il n'existe jamais qu'un seul objet None
).
is
vérifie si l'objet est le même objet, tandis que == vérifie simplement s'ils sont équivalents.
Par exemple :
p = [1]
q = [1]
p is q # False because they are not the same actual object
p == q # True because they are equivalent
Mais comme il n'y a qu'un seul None
ils seront toujours les mêmes, et is
retournera Vrai.
p = None
q = None
p is q # True because they are both pointing to the same "None"
Cette réponse n'est pas correcte, comme l'explique la réponse de Ben Hoffstein ci-dessous. stackoverflow.com/questions/3257919/is-none-vs-none/ . x == None
peut être évalué à True
même si x
n'est pas None
mais une instance d'une certaine classe avec son propre opérateur d'égalité personnalisé.
Cela dépend de ce que vous comparez à None. Certaines classes ont des méthodes de comparaison personnalisées qui traitent == None
différemment de is None
.
En particulier, la sortie de a == None
ne doit même pas être booléen ! !! - une cause fréquente de bugs.
Pour un exemple spécifique, prenons un tableau numpy dans lequel l'élément ==
La comparaison est mise en œuvre par éléments :
import numpy as np
a = np.zeros(3) # now a is array([0., 0., 0.])
a == None #compares elementwise, outputs array([False, False, False]), i.e. not boolean!!!
a is None #compares object to object, outputs False
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
6 votes
Ver Y a-t-il une différence entre
==
yis
en python ?2 votes
Cela répond-il à votre question ? Y a-t-il une différence entre "==" et "est" ?
0 votes
Ce n'est pas clair si cette question concerne
is
vs==
ou sur la nature de ce qui est exactementNone
et comment le comportement diffère dans l'un ou l'autre contexte (c'est pour cette dernière raison que j'ai atterri ici). Vu l'imprécision et le manque de réponses du PO... Je suis surpris qu'il y ait autant de votes positifs. Je veux dire... allez... la question n'est même pas écrite dans la question elle-même...