Maison > développement back-end > Tutoriel Python > Pourquoi « 0 < 0 == 0 » est-il évalué à « False » en Python ?

Pourquoi « 0 < 0 == 0 » est-il évalué à « False » en Python ?

DDD
Libérer: 2024-12-09 03:27:12
original
717 Les gens l'ont consulté

Why Does `0 < 0 == 0` Evaluate to `False` in Python?

Comparaisons chaînées en Python : percer le mystère de 0 < 0 == 0 Mensonge

Dans les profondeurs du code de la bibliothèque standard de Python, se trouve une construction déroutante dans Queue.py de Python 2.6 :

def full(self):
    """Return True if the queue is full, False otherwise
    (not reliable!)."""
    self.mutex.acquire()
    n = 0 < self.maxsize == self._qsize()
    self.mutex.release()
    return n
Copier après la connexion

Pourquoi cette expression, 0 &Lt ; 0 == 0, donne Faux ? À première vue, cela semble contre-intuitif, car 0 est clairement inférieur à 0 et 0 == 0 est vrai.

Comparaisons chaînées : le raccourci de Python

Python a un fonctionnalité unique appelée « comparaisons chaînées », qui rend l'expression des comparaisons de plage plus concise. Par exemple, ce qui suit équivaut à utiliser des comparaisons chaînées :

0 < x <= 5
Copier après la connexion

En interne, ces comparaisons chaînées sont interprétées différemment. Python évalue l'expression de gauche à droite et renvoie la valeur de la première comparaison qui donne la valeur False. Dans notre cas, 0 < 0 est évalué à False, donc l'évaluation suivante == 0 n'est pas pertinente et donc l'expression renvoie False.

En revanche, lorsque des parenthèses sont introduites, elles forcent l'évaluation de l'expression qu'elles contiennent à être terminée avant la prochaine la comparaison est appliquée. Cela annule le comportement de comparaison en chaîne. En conséquence, nous obtenons les valeurs True attendues lorsque des parenthèses sont ajoutées :

(0 < 0) == 0
0 < (0 == 0)
Copier après la connexion

Par conséquent, l'expression de la méthode full(), 0 < self.maxsize == self._qsize(), est évalué à False si self.maxsize est 0, indiquant que la file d'attente n'est jamais pleine lorsque la limite de taille est définie sur 0.

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