Порівняння

Оновлено: 24.04.2023

На відміну від C, усі операції порівняння в Python мають однаковий пріоритет, який нижчий, ніж у будь-якої арифметичної операції, операції зсуву чи побітової операції. Крім того, на відміну від C, такі вирази, як a < b < c, мають тлумачення, яке є звичайним у математиці:

comparison    ::=  or_expr (comp_operator or_expr)*
comp_operator ::=  "<" | ">" | "==" | ">=" | "<=" | "!="
                   | "is" ["not"] | ["not"] "in"

Порівняння дають логічні значення: True або False. Спеціальні rich comparison methods можуть повертати не логічні значення. У цьому випадку Python викличе bool() для такого значення в логічних контекстах.

Порівняння можна довільно об’єднати в ланцюжок, наприклад, x < y <= z еквівалентно x < y і y <= z, за винятком того, що y обчислюється лише один раз (але в обох випадках z взагалі не обчислюється, якщо x < y виявляється хибним).

Формально, якщо a, b, c, …, y, z є виразами, а op1, op2, …, opN є операторами порівняння, тоді a op1 b op2 c ... y opN z еквівалентний a op1 b і b op2 c і ... y opN z, за винятком того, що кожен вираз обчислюється щонайбільше один раз.

Зауважте, що a op1 b op2 c не передбачає жодного порівняння між a і c, тому, наприклад, x < y > z є абсолютно законним (хоча, можливо, не дуже).