🐍 for ... else — одна из самых необычных конструкций Python
Если спросить опытных разработчиков, какую конструкцию Python они используют реже всего, многие назовут именно for ... else.
Хотя на самом деле она может сделать код намного понятнее.
Посмотрите на пример.
numbers = [4, 8, 15, 16, 23, 42]
for number in numbers:
if number == 15:
print("Число найдено")
break
else:
print("Число отсутствует")
На первый взгляд кажется, что else относится к if.
Но это не так.
Как работает else у цикла?
Блок else выполнится только в том случае, если цикл завершился естественным образом.
Если во время работы встретился break, то else пропускается.
То есть логика выглядит так:
Цикл завершился без break?
│
Да ─────────► Выполнить else
│
Нет ────────► Пропустить else
Где это действительно удобно?
Например, при поиске элемента.
Без for...else обычно пишут так:
found = False
for number in numbers:
if number == 15:
found = True
break
if not found:
print("Число отсутствует")
Приходится заводить дополнительную переменную found, которая нужна только для контроля логики.
С for...else она больше не нужна.
Почему эту конструкцию редко используют?
Есть две причины:
- многие разработчики просто не знают о её существовании;
- некоторые считают её менее очевидной, чем обычный флаг.
Поэтому в разных командах отношение к for...else отличается.
Когда использовать?
✅ поиск элемента;
✅ проверка выполнения условия;
✅ ситуации, где нужен break.
А вот если внутри цикла нет break, то else практически теряет смысл.
💡 Интересный факт
Похожая конструкция есть и у цикла while.
То есть else может использоваться не только с if, но и с циклами — это одна из уникальных особенностей Python, которой нет в большинстве популярных языков программирования.
❓ А вы когда-нибудь использовали for...else?
👍 Да, регулярно.
🤔 Знал, но ни разу не применял.
😮 Сегодня узнал, что такое вообще существует.
Курс «Машинное обучение» от Академии Информационных Систем поможет освоить основы, разобраться в работе с данными и получить практические навыки применения ML-технологий.
📈 Машинное обучение сегодня используется в аналитике, прогнозировании, автоматизации процессов и интеллектуальных системах.
Начните изучать технологии, которые уже меняют бизнес и рынок труда.
🐍 Python 3.14 стал быстрее запускать программы — без изменения вашего кода
Обычно, когда выходит новая версия Python, разработчики ждут новый синтаксис или новые функции.
Но одно из самых полезных нововведений Python 3.14 вообще не связано с написанием кода.
Новый JIT-компилятор
В Python 3.14 появилась экспериментальная поддержка JIT-компиляции (Just-In-Time).
Если раньше интерпретатор выполнял каждую инструкцию последовательно, то теперь наиболее часто выполняемые участки программы могут компилироваться в машинный код прямо во время работы.
Что это даёт?
Без каких-либо изменений в программе можно получить:
✅ более быстрое выполнение вычислений;
✅ ускорение длительных циклов;
✅ лучшую производительность вычислительных задач.
То есть иногда достаточно просто обновить Python.
Нужно ли переписывать код?
Нет.
Например, такой код:
total = 0
for i in range(10_000_000):
total += i
останется абсолютно тем же.
Но в будущем именно такие участки смогут выполняться быстрее благодаря JIT.
Есть ли ограничения?
Да.
На сегодняшний день JIT:
экспериментальный;
не включён по умолчанию;
приносит пользу не всем типам программ.
Если ваш скрипт работает несколько миллисекунд, разницы вы, скорее всего, не заметите.
А вот для длительных вычислений потенциал очень интересный.
Почему это важно?
Много лет Python критиковали за скорость.
И хотя существуют PyPy, Cython и другие решения, теперь разработчики CPython постепенно внедряют ускорение в сам язык.
Это значит, что в ближайшие годы Python будет становиться быстрее без необходимости менять привычный стиль программирования.
💡 Интересный факт
Ускорение Python — это не одно большое обновление, а серия небольших улучшений.
Начиная с Python 3.11 каждая новая версия постепенно оптимизирует работу интерпретатора. Python 3.14 продолжает эту стратегию, добавляя экспериментальный JIT.