Понимание операторов «и» и «или» в Python.
Операторы and
и or
в Python широко известны как логические операторы, используемые для оценки выражения, которое возвращает логическое значение, которое может быть либо True
, либо False
. Однако способ работы этих операторов может отличаться от того, что обычно воспринимается. В этой статье мы рассмотрим, как работают эти операторы, и предоставим примеры кода, чтобы лучше понять эту концепцию.
Прежде чем обсуждать, как работают эти операторы, важно отметить, что в Python логические типы данных True
и False
имеют аналоги в других типах данных.
Числа (целые и с плавающей запятой)
Когда дело доходит до чисел (целых и вещественных), 0
эквивалентно False
в логическом выражении, тогда как любое число, отличное от 0
, считается True
.
Вывод:
Вывод:
Струны
В случае строк пустая строка (“”)
соответствует логическому значению False
, тогда как любая непустая строка эквивалентна True
в логическом значении.
Вывод:
Вывод:
Вы можете быть удивлены тем, почему первое выражение в приведенном выше коде оценивается как True
, хотя в строке нет значения. Как мы видим, строка содержит space
между кавычками. Важно отметить, что space
в Python — это символ, и поэтому программа видит его как непустое значение, которое оценивается как True
.
Структуры данных
Когда речь идет о структурах данных, таких как списки, наборы, кортежи и словари, пустая структура данных эквивалентна False
в логическом значении, в то время как любая непустая структура данных имеет логическое значение True
.
Вывод:
Вывод:
Как они работают?
Теперь давайте рассмотрим, как работают эти операторы.
- Theиоператор
Оператор and
работает следующим образом:
Оператор and
в Python возвращает первое значение, которое оценивается как False
, и останавливает вычисление выражения. Если все значения оцениваются как True
, оператор and
возвращает последнее значение в выражении. Давайте посмотрим на это в коде.
Вывод:
2. Операция или
Оператор or
работает следующим образом:
Оператор or
в Python возвращает первое значение, которое оценивается как True
, и останавливает вычисление выражения. Если все значения оцениваются как False
, оператор or
возвращает последнее значение в выражении.
Вывод:
Теперь давайте напишем собственные функции для реализации операторов and
и or
в Python и протестируем их.
Обе функции принимают переменное количество аргументов и возвращают первый аргумент, удовлетворяющий определенному условию, или последний аргумент, если ни один из них не удовлетворяет этому условию.
Функция my_and
принимает любое количество аргументов (обозначается *values
) и перебирает каждый аргумент, используя цикл for
. Внутри цикла он проверяет, является ли текущий аргумент «Falsey» (т. е. оценивается как False
или None
), и если это так, он немедленно возвращает этот аргумент. В противном случае он продолжает перебирать аргументы, пока не достигнет конца. Если все аргументы имеют значение «Правда» (т. е. не False
или None
), функция возвращает последний аргумент.
Точно так же функция my_or
принимает любое количество аргументов и перебирает каждый аргумент, используя цикл for
. Внутри цикла он проверяет, является ли текущий аргумент «истинным», и если это так, он немедленно возвращает этот аргумент. В противном случае он продолжает перебирать аргументы, пока не достигнет конца. Если все аргументы оцениваются как «Falsey», функция возвращает последний аргумент.
Теперь давайте попробуем протестировать наши функции, чтобы убедиться, что они работают аналогично предварительно созданным операторам Python.
Вывод:
Судя по результату кода, очевидно, что наша функция my_or
работает так, как мы предполагали, и возвращает первое значение с логическим значением True
, которое в данном случае равно a
. Точно так же наша функция my_and
возвращает первое значение с логическим значением False
, то есть 0
. Когда мы сравниваем наши пользовательские функции с готовыми операторами Python, мы видим, что они дают одинаковые результаты, поскольку выражения приводят к логическому значению True
.
В этой статье мы не только получили представление о том, как операторы and
и or
работают в Python, но также узнали, как создавать собственные функции для воспроизведения их функциональности. Эти операторы необходимы в Python для управления потоком данных и принятия решений, и благодаря знаниям, полученным в этой статье, мы можем с уверенностью применять их в любом проекте Python, где это необходимо.
Спасибо за чтение!