Стейблкоины

Как работают операторы or и and в Python: полное руководство

Стейблкоины
Do You Know How `or` and `and` Work in Python?

Подробное объяснение работы логических операторов or и and в Python, их особенностей, тонкостей оценки выражений и применения в реальном коде. Понимание истинности и ложности объектов, короткое замыкание и примеры использования.

Логические операторы or и and являются фундаментальными инструментами программирования на Python, которые часто используются для управления потоком выполнения программы и принятия решений. Несмотря на их распространённость и кажущуюся простоту, многие разработчики, особенно начинающие, могут неправильно понимать, как именно эти операторы работают и возвращают результаты. Глубокое понимание их поведения помогает писать более эффективный и лаконичный код, а также избегать возможных ошибок. Прежде чем погрузиться в детали, стоит разобраться с ключевым понятием в Python — истинностью (truthiness) и ложностью (falsiness) объектов. В Python любой объект можно оценить в логическом контексте — условии if, цикле while или логическом выражении.

При такой оценке объект либо считается истинным (truthy), либо ложным (falsy). Например, числа кроме нуля оцениваются как истинные, ноль считается ложным. Пустые коллекции, такие как пустая строка "", пустой список [] или пустой словарь {}, тоже ложны. Понимание этого критично, так как операторы or и and опираются именно на это свойство. Рассмотрим оператор or.

Его основная задача — вернуть первый истинный операнд из двух или, если нет истинных, вернуть последний операнд. Это работает немного иначе, чем ожидание от обычных булевых операций, где результатом зачастую является истинное или ложное значение. В Python or не обязательно возвращает булево значение, вместо этого он возвращает один из исходных операндов. Например, выражение 5 or 0 вернёт 5, так как число 5 является истинным. Если же первый операнд ложен, например 0, тогда or возвращает второй операнд, который в зависимости от значения может быть как истинным, так и ложным.

Такое поведение связано с ленивой оценкой или коротким замыканием (short-circuiting). Оператор or проверяет первый операнд, и если он истинный, возвращает его сразу, не обращая внимания на второй операнд. Это позволяет значительно оптимизировать код, так как при истинном первом значении второй операнд не вычисляется вообще. Такой подход особенно полезен, если второй операнд содержит сложные вычисления или функции, выполнение которых дорогостояще или может привести к ошибкам. Примером может служить выражение 5 or int("hello"), которое не вызывает ошибку, хотя int("hello") само по себе привело бы к исключению ValueError.

Это происходит потому, что первый операнд 5 является истинным, и Python просто не вычисляет второй операнд. Если же первый операнд ложен, Python переходит к вычислению второго. В этом случае и возвращается его значение, будь оно истинным или ложным. Таким образом, or возвращает первый истинный элемент либо последний ложный. С оператором and ситуация в чём-то зеркальная.

Он возвращает первый ложный операнд, если такой есть, либо последний операнд, если все истинные. Другими словами, and требует, чтобы оба операнда были истинными, чтобы вернуть истину. В выражении 5 and "hello" оба операнда истинные, и результатом будет второй операнд — "hello". Если хотя бы один является ложным, то оператор вернёт именно его, так как для истинности всего выражения оба должны быть истинными. При вычислении выражения оператор and тоже использует ленивую оценку.

Если первый операнд ложен, то второй даже не рассматривается, что позволяет избежать ненужных или опасных операций. Например, в выражении 0 and int("hello") второй операнд не вычисляется, и ошибка не возникает. Понимание того, что or и and возвращают именно операнды, а не булевы значения, открывает возможности для написания более идиоматичного Python-кода. Часто это используется для установки значений по умолчанию или выбора первого доступного значения. Например, конструкция person = input("Enter name: ") or "Unknown" позволяет присвоить переменной person либо введённое пользователем значение, либо строку "Unknown", если пользователь оставит ввод пустым.

В практических задачах оператор or используют для организации логики выбора среди нескольких вариантов: если первый вариант ложен, берётся следующий. Аналогично and применяется для проверки цепочек условий, где необходимо убедиться, что все значения истинны, прежде чем выполнить действие. Стоит отметить, что такое поведение операторов or и and в Python отличается от классических логических операций в других языках программирования, где результатом всегда является булево значение. В Python же возвращается сам операнд, что накладывает определённые требования к внимательному использованием этих операторов, чтобы не возникало неожиданных результатов. Также важно помнить про возможность ошибок при вызове функций во втором операнде.

Так как сработает короткое замыкание, функции могут быть либо вызваны, либо нет, что может влиять на логику программы и отладку. Таким образом, глубокое понимание работы операторов or и and, а также особенностей truthiness и short-circuit evaluation, существенно поможет писать более эффективные и понятные программы. Это знание пригодится не только новичкам, но и опытным разработчикам, желающим повысить качество своего кода и избежать потенциальных ошибок, связанных с неправильной интерпретацией логических выражений. Изучение этих операторов расширяет представления о том, как Python работает на низком уровне, и позволяет использовать мощь языка по максимуму, создавая лаконичные и производительные решения.

Автоматическая торговля на криптовалютных биржах Покупайте и продавайте криптовалюты по лучшим курсам Privatejetfinder.com (RU)

Далее
Engineers study little-known hazard of lunar landings
Понедельник, 10 Ноябрь 2025 Инженеры изучают малоизвестную опасность лунных посадок: влияние ракетного газа и пыли на будущие миссии

Погружение в уникальные процессы взаимодействия ракетных движителей с лунной поверхностью раскрывает важные аспекты, которые помогут обеспечить безопасность и долгосрочную устойчивость будущих лунных баз и технологий посадки на спутник Земли.

Reserved Custom Keyboard Key in VSCode
Понедельник, 10 Ноябрь 2025 Эффективное использование зарезервированных клавиш для пользовательских сочетаний в VSCode

Обзор методов настройки и оптимизации пользовательских горячих клавиш в VSCode, позволяющий повысить продуктивность и упростить рабочий процесс, с акцентом на использование зарезервированных клавиш и локального лидера на примере реального опыта.

Show HN: Fuck.it] – Email with Attitude
Понедельник, 10 Ноябрь 2025 Fuck.it: Революция в мире электронной почты с бескомпромиссным подходом к приватности

Обзор уникального сервиса электронной почты Fuck. it, который предлагает пользователям приватность, безопасность и отказ от рекламы, ставя на первое место конфиденциальность и стильный подход к коммуникации в интернете.

DHH: Building competence is better than therapy
Понедельник, 10 Ноябрь 2025 Как развитие компетенций помогает бороться с депрессией эффективнее терапии

Изучение новых навыков и развитие компетенций оказывают мощное влияние на психологическое состояние, снижая симптомы легких депрессивных состояний и укрепляя чувство удовлетворенности жизнью. Вместе с физической активностью и социальной поддержкой это становится действенной альтернативой традиционной терапии.

Bringing a 10yo Bicycle Nav Back to Life with Open Source Software (and Doom)
Понедельник, 10 Ноябрь 2025 Как вдохнуть новую жизнь в 10-летний велосипедный навигатор с помощью открытого ПО и DOOM

Обновление и модернизация старого велосипедного навигатора Navman Bike 1000 с помощью открытого программного обеспечения и современных карт OpenStreetMap, а также удивительные возможности запуска классической игры DOOM на устройстве с Windows CE.

Phased Array Beamforming: Understanding and Prototyping [video]
Понедельник, 10 Ноябрь 2025 Фазированная решетка и формирование луча: понимание и прототипирование

Подробное исследование технологии фазированной антенной решетки и процесса создания прототипов систем формирования луча для современных радиосистем и коммуникаций.

FCC to Appoint a Babysitter to Make Sure CBS Isn't Anti-Trump
Понедельник, 10 Ноябрь 2025 Федеральная комиссия США по связи назначит наблюдателя для контроля за CBS и предотвращения анитрампистских настроений

Обсуждается решение Федеральной комиссии по связи (FCC) назначить специального омбудсмена с целью мониторинга политической корректности CBS после крупного слияния с Skydance. Изучается влияние этого шага на свободу СМИ, внутренние изменения в CBS и роль FCC в формировании медиаландшафта США.