- Часть I. Вводное руководство
- Глава 2. Использование интерпретатора
- 2.2. Интерпретатор и его среда
- 5.7. Подробнее об условиях
5.7. Подробнее об условиях
Помимо описанных ранее операторов сравнения, существует еще несколько условных операторов.
Операторы in и not in проверяют, есть указанное значение в последовательности. Операторы is и is not определяют, ссылаются ли две переменные на один и тот же объект. Все приведённые здесь операторы имеют одинаковый приоритет, который ниже, чем у арифметических операторов.
Логические выражения могут быть сцеплены: например, 'a < b == c' проверяет, меньше ли a чем b и равны ли b и c.
Логические выражения можно группировать с помощью логических операторов and и or, а также результат можно инвертировать оператором not. Все логические операторы имеют меньший приоритет, чем операторы сравнения. Среди логических операторов, not имеет наибольший приоритет и or — наименьший. Таким образом, 'A or not B and C' эквивалентно 'A or ((not B) or C)'. Безусловно, можно использовать скобки для определения порядка вычисления.
Аргументы логических операторов and и or вычисляются справа налево до тех пор, пока результат не будет определен. Например, если выражения A и C истинны, но B ложно, в 'A and B and C' выражение C вычисляться не будет. Вообще говоря, возвращаемое значение операторов and и or является не логическим, а равно значению последнего вычисленного аргумента.
Можно присвоить результат сравнения или логического выражения переменной:
>>> string1, string2, string3 = \
... '', 'Trondheim', 'Hammer Dance'
>>> non_null = string1 or string2 or string3
>>> non_null
'Trondheim'
Обратите внимание, что, в отличие от C, присваивание не может находиться внутри выражения. Такое ограничение позволяет избежать ошибок, типичных для программ на C: использование = вместо ==.