Maison > Article > développement back-end > Quelle est la différence entre 'foo is None' et 'foo == None'
La différence entre "foo is None" et "foo == None" est la suivante : la différence entre les juges. Le juge is est utilisé pour comparer si deux objets sont le même objet, et le juge == est utilisé. pour comparer deux objets. Si les valeurs des objets sont égales.
La différence entre foo est None et foo == None
if foo is None: pass if foo == None: pass
Ce sont deux utilisations différentes, ce sont quoi la différence ?
SolutionRéponse :
Les variables elles-mêmes en Python ne stockent pas leurs valeurs. L'affectation de variable pointe en fait la référence de variable vers un objet mis en cache. mémoire elle-même, par exemple :
a=5 b=5
Il semble que les deux variables pointent en fait vers le même objet. À ce stade, a==b, a is b sont tous deux vrais et ==. L'opérateur compare les valeursdes deux objets. Il détermine si deux variables pointent vers la même référence. Si vous souhaitez déterminer s'il s'agit du même objet, utilisez la fonction id() pour afficher l'identification de l'objet réel. (un entier). À l'heure actuelle, id(a), id(b), id( 5) Les identifiants sont tous cohérents.
De même, si foo vaut None, foo pointe en fait vers l'identifiant réel de l'objet None. À ce stade, utilisez id() pour afficher l'identifiant de toute variable qui est None, et vous le constaterez. c'est la même chose que id(None) Les résultats sont les mêmes.
Les résultats de la question sont les mêmes, mais la sémantique est différente. Cela dépend si vous voulez exprimer "foo et None sont le même objet", ou "foo value et None value sont". égal".
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!