Heim > Backend-Entwicklung > Python-Tutorial > Warum wird „0 < 0 == 0' in Python als „Falsch' ausgewertet?

Warum wird „0 < 0 == 0' in Python als „Falsch' ausgewertet?

DDD
Freigeben: 2024-12-09 03:27:12
Original
716 Leute haben es durchsucht

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

Verkettete Vergleiche in Python: Das Geheimnis von 0 < lüften 0 == 0 Falschheit

In den Tiefen des Standardbibliothekscodes von Python liegt ein rätselhaftes Konstrukt in Queue.py aus 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
Nach dem Login kopieren

Warum ist dieser Ausdruck 0 < 0 == 0, Ausbeute Falsch? Auf den ersten Blick scheint es kontraintuitiv, da 0 eindeutig kleiner als 0 ist und 0 == 0 wahr ist.

Verkettete Vergleiche: Pythons Verknüpfung

Python hat eine einzigartige Funktion namens „verkettete Vergleiche“, die die Darstellung von Bereichsvergleichen prägnanter macht. Folgendes entspricht beispielsweise der Verwendung verketteter Vergleiche:

0 < x <= 5
Nach dem Login kopieren

Intern werden diese verketteten Vergleiche unterschiedlich interpretiert. Python wertet den Ausdruck von links nach rechts aus und gibt den Wert des ersten Vergleichs zurück, der „False“ ergibt. In unserem Fall ist 0 < 0 ergibt Falsch, daher ist die nachfolgende == 0-Auswertung irrelevant und der Ausdruck gibt daher Falsch zurück.

Wenn dagegen Klammern eingeführt werden, erzwingen sie, dass die Auswertung des darin enthaltenen Ausdrucks vor der nächsten abgeschlossen wird Vergleich angewendet wird. Dies negiert das verkettete Vergleichsverhalten. Als Ergebnis erhalten wir die erwarteten True-Werte, wenn Klammern hinzugefügt werden:

(0 < 0) == 0
0 < (0 == 0)
Nach dem Login kopieren

Daher ist der Ausdruck der Methode full(), 0 < self.maxsize == self._qsize(), ergibt False, wenn self.maxsize 0 ist, was bedeutet, dass die Warteschlange nie voll ist, wenn die Größenbeschränkung auf 0 gesetzt ist.

Das obige ist der detaillierte Inhalt vonWarum wird „0 < 0 == 0' in Python als „Falsch' ausgewertet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage