2014-09-09 15 views
9

Die Python-Dokumentation für operator precedence Zustände:Python-Vergleichsoperatoren Verkettung/Gruppierung von links nach rechts?

Operatoren in der gleichen Box Gruppe links nach rechts (mit Ausnahme Vergleiche, einschließlich Tests, die alle die gleiche Priorität und Kette von links nach rechts - siehe Abschnitt Comparisons ...)

Was bedeutet das? Im Einzelnen:

  1. "Operatoren in der gleichen Box Gruppe von links nach rechts (mit Ausnahme Vergleiche ...)" - Vergleiche tun nicht Gruppe von links nach rechts?

  2. Wenn Vergleiche nicht Gruppe von links nach rechts machen, was machen sie stattdessen? Verketten sie sich im Gegensatz zu "Gruppe"?

  3. Wenn Vergleiche „Kette“ und nicht als „Gruppe“, was ist der Unterschied zwischen „Verkettung“ und „Gruppierung“?

  4. Was einige Beispiele, dass die Vergleichsoperatoren Kette nachweisen können, würde von rechts eher links als von rechts nach links?

Antwort

12

Vereinigung (das ist, was nicht-Vergleichsoperatoren tun):

a + b + c means (a + b) + c 

Chaining (das ist, was Vergleichsoperatoren tun):

a < b < c means (a < b) and (b < c) 

Gruppierung links nach rechts (dies ist wie die Dinge gruppiert sind):

5 - 2 - 1 means (5 - 2) - 1 == 2 

zu Gruppierung rechts entgegengesetzt nach links (das einem anderen Ergebnis erzeugen würde):

5 - (2 - 1) == 4 

(edit)

Chaining nach rechts ist links, so in a < b < c, der Ausdruck a < b vor b < c ausgewertet wird, und Wenn a < b falsch ist, wird b < c nicht ausgewertet.

(2 < 1 < nonsense) gibt den Wert False, weil (1 < nonsense) nie ausgewertet wird.
(nonsense > 1 > 2) wirft ein Fehler (nonsense > 1)

https://en.wikipedia.org/wiki/Short-circuit_evaluation

+0

Dank @khelwood, das ist hilfreich!Das ist ein gutes Beispiel dafür, wie sich die Gruppierung von links nach rechts von rechts nach links unterscheidet. Ich suche nach einem ähnlichen Verkettungsbeispiel, um zu zeigen, wie sich die Verkettung von links nach rechts von rechts nach links unterscheidet. Wenn es von rechts nach links verkettet wäre, dann würde 'a

+0

Ja, das ist mein Verständnis. Siehe meine Bearbeitung. – khelwood

+0

Schön - danke @khelwood! –

0

Gut zu bewerten versuchen, obwohl es, wie Sie arbeitet sagen, und niemand kann etwas nicht tun zu ändern, ich denke, die Syntax zum Verwechseln schrecklich ist, wie es impliziert und zwischen jeweils zwei möglichen Paaren, etwas, das nicht offensichtlich in irgendeiner Weise