В каком порядке выполняются логические операторы `and`, `or`, `not`?

Порядок выполнения логических операторов в Python (от высшего приоритета к низшему):
  1. not (логическое НЕ)
  2. and (логическое И)
  3. or (логическое ИЛИ)
Можно использовать скобки () для явного указания порядка выполнения.

Порядок выполнения логических операторов в Python, как и во многих других языках программирования, определяется их приоритетом. Вот этот порядок, от высшего к низшему:

  1. not: Логическое отрицание. Этот оператор имеет наивысший приоритет и применяется к одному операнду.
  2. and: Логическое И. Этот оператор возвращает True, только если оба операнда истинны.
  3. or: Логическое ИЛИ. Этот оператор возвращает True, если хотя бы один из операндов истинен.

Важно отметить, что порядок вычисления можно изменить с помощью круглых скобок (). Выражения в скобках вычисляются первыми. Использование скобок также повышает читаемость кода, особенно при работе со сложными логическими выражениями.

Пример:


x = True
y = False
z = True

result = not x or y and z

# Эквивалентно: (not x) or (y and z)
# not x -> False
# y and z -> False
# False or False -> False

print(result)  # Вывод: False

# С использованием скобок для изменения порядка:
result = not (x or y) and z

# Эквивалентно: (not (x or y)) and z
# x or y -> True
# not (x or y) -> False
# False and z -> False

print(result)  # Вывод: False

В Python также действует правило "ленивого вычисления" (short-circuit evaluation) для and и or. Это означает, что если результат выражения можно определить, вычислив только часть операндов, оставшиеся операнды не вычисляются. Например:

  • В выражении x and y, если x ложно, то y не будет вычисляться, так как результат всегда будет False.
  • В выражении x or y, если x истинно, то y не будет вычисляться, так как результат всегда будет True.

Это может быть важно, если операнды содержат побочные эффекты (например, вызовы функций, которые изменяют состояние программы).

0