Логічні операції
Оновлено: 24.04.2023
or_test ::= and_test | or_test "or" and_test
and_test ::= not_test | and_test "and" not_test
not_test ::= comparison | "not" not_test
У контексті логічних операцій, а також коли вирази використовуються операторами потоку керування, такі значення інтерпретуються як false: False, None, числові нулі всіх типів, а також порожні рядки та контейнери ( включаючи рядки, кортежі, списки, словники, набори та заморожені набори). Усі інші значення інтерпретуються як істинні. Визначені користувачем об’єкти можуть налаштувати своє значення істинності, надаючи метод __bool__().
Оператор not видає True, якщо його аргумент false, False в іншому випадку.
Вираз x і y спочатку обчислює x; якщо x false, повертається його значення; інакше обчислюється y і повертається отримане значення.
Вираз x або y спочатку обчислює x; якщо x істинне, повертається його значення; інакше обчислюється y і повертається отримане значення.
Зауважте, що ані and, ані or не обмежують значення та тип, які вони повертають, значеннями False і True, а радше повертають останній оцінений аргумент. Це іноді корисно, наприклад, якщо s є рядком, який слід замінити значенням за замовчуванням, якщо він порожній, вираз s або 'foo' дає потрібне значення. Оскільки not має створити нове значення, воно повертає логічне значення незалежно від типу свого аргументу (наприклад, not 'foo' створює False, а не '' .)