Логічні операції

Оновлено: 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, а не '' .)