Подтвердить что ты не робот

Приоритет логических операторов NOT AND & OR в python

Насколько я знаю, в C и С++ последовательность приоритетов для NOT AND и OR NOT > AND > OR. Но это похоже не работает аналогично в Python. Я попытался найти его в документации Python и не смог (думаю, я немного нетерпелив.). Может кто-нибудь прояснить это для меня?

4b9b3361

Ответ 1

НЕТ, И, ИЛИ, от наивысшего до самого низкого в соответствии с документацией https://docs.python.org/3/reference/expressions.html#operator-precedence

Вот полная таблица приоритетов, наименьший приоритет до наивысшего. Строка имеет тот же приоритет и цепи слева направо

  • лямбда
  • if - else
  • или
  • и
  • not x
  • in, а не in, is, is not, <, < =, > , > =,! =, ==
  • |
  • ^
  • &
  • <, →
  • +, -
  • *,/,//,%
  • + x, -x, ~ x
  • **
  • x [index], x [индекс: индекс], x (аргументы...), x.attribute
  • (выражения...), [выражения...], {ключ: значение...}, {выражения...}

EDIT: если неправильный приоритет

Ответ 2

not связывается более жестко, чем and, который связывается более жестко, чем or, как указано в ссылке на язык

Ответ 3

Из булевых операторов приоритет от самого слабого до сильного выглядит следующим образом:

  • or
  • and
  • not x
  • is not; not in

Если операторы имеют равную оценку приоритетов, они идут слева направо.

Ответ 4

Нет никаких оснований для того, чтобы Python имел другую последовательность приоритетов этих операторов, чем хорошо установленную в (почти) всех других языках программирования, включая C/С++.

Вы можете найти его в справочнике по языку Python, часть 6.16 - приоритет оператора, загружаемый (для текущей версии и упакованный со всей другой стандартной документацией) из https://docs.python.org/3/download.html или читайте здесь: 6.16. Приоритет оператора.

Но в Python все еще есть что-то, что может ввести вас в заблуждение: результат операторов and и or может отличаться от True или False - см. 6.11 Логические операции в том же документе.

Ответ 5

Вы можете выполнить следующий тест, чтобы определить приоритет and и or.

Сначала попробуйте 0 and 0 or 1 в консоли python

Если or связывается первым, тогда мы ожидаем 0 как вывод.

В моей консоли 1 - это вывод. Это означает, что and связывает сначала или равно or (возможно, выражения оцениваются слева направо).

Затем попробуйте 1 or 0 and 0.

Если or и and связывать одинаково со встроенным правым порядком оценки слева направо, мы должны получить 0 как вывод.

В моей консоли 1 - это вывод. Тогда мы можем заключить, что and имеет более высокий приоритет, чем or.