БэкендPython

Python 3.15 для новичка: 5 новых возможностей, которые можно попробовать сразу

Разбираем Python 3.15 на пяти коротких примерах: отложенные импорты, frozendict, sentinel, распаковка в comprehensions и встроенный профайлер.

Кодик

Автор

6 мин чтения

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

Списки изменений Python длинные, и новичку трудно отделить полезный синтаксис от деталей реализации и экспериментальных API. Поэтому отделим настройку, входные данные, основное действие и проверку. В этой статье вы соберёте один файл с пятью независимыми демонстрациями новых возможностей Python 3.15. Проверка: файл запускается в Python 3.15, печатает ожидаемые значения и не использует сторонние библиотеки.

1Соберите минимум

получить Python 3.15 и проверить sys.version_info. Не расширяйте проект до первого успешного запуска.

2Увидьте данные

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

3Измените правило

После успеха добавьте собственный пример для одного новшества и подпишите, какую проблему оно решает. Так копирование станет практикой.

Как устроен учебный проект Python 3.15

Каждый пример оформлен отдельной функцией, поэтому его можно запустить, изменить и сравнить независимо от остальных. Держите ввод, логику и отображение раздельно: тогда каждый этап можно проверить отдельно.

ЭтапДействиеПроверяемый результат
Версияполучить Python 3.15 и проверить sys.version_infoинтерпретатор сообщает версию 3.15
Примерызапустить пять коротких функций по очередикаждая функция печатает подписанный результат
Изменениезаменить одно значение в каждом примереповедение меняется только в выбранном блоке
Сравнениезапустить совместимый фрагмент в старой версиивидно, какой синтаксис или API относится именно к 3.15

Контрольные точки: версия, примеры, изменение и сравнение. Следующий шаг начинается после совпадения с ожидаемым результатом.

Путь данных в проекте Python 3.15
От входных данных до видимого результата. Сначала проверяется вход, затем действие и только потом интерфейс.

Зафиксируйте первый успех Выполните python3.15 --version. Если команда показывает более раннюю версию, новый синтаксис нельзя проверять этим процессом. Сохраните команду запуска и ожидаемый вывод.

Собираем рабочий пример шаг за шагом

Материал сверялся с официальной страницей What’s New in Python 3.15 для ветки документации 3.15. Для изолированного запуска используйте uv run --python 3.15 python demo.py: uv загрузит подходящий интерпретатор отдельно от системного Python. Проверьте текущую папку через pwd или Get-Location. Вставьте пример целиком, выполните один раз, затем разбирайте по частям.

lazy import json

MISSING = sentinel("MISSING")


def unpacking() -> list[int]:
    groups = [[1, 2], [10, 20]]
    return [*group for group in groups]


def frozen_settings():
    return frozendict({"theme": "dark", "font": 16})


def find(value=MISSING):
    return "аргумент не передан" if value is MISSING else value


print(unpacking())
print(frozen_settings())
print(find(), find(None))
print(json.loads('{"ready": true}'))

# Пятый эксперимент запускается из терминала:
# python -m profiling.sampling run demo.py
Что должно произойти после запуска
  • Распаковка внутри list comprehension превращает две группы в список [1, 2, 10, 20].
  • sentinel позволяет отличить отсутствующий аргумент от явно переданного None.
  • Повторный запуск даёт тот же предсказуемый результат.
  • Пустой ввод получает понятное сообщение вместо падения.

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

Хрупкий и проверяемый вариант Python 3.15
Что отличает устойчивый проект от случайного запуска. Явные границы делают ошибку локальной и понятной.

Что происходит внутри и почему это работает

Отложенные импорты по PEP 810 не следует включать в каждый учебный файл автоматически: они меняют момент выполнения кода модуля. frozendict полезен там, где словарь должен оставаться неизменным и хешируемым. Sentinel решает старую проблему, когда None является допустимым значением. Логику держите отдельно от вывода: функция получает аргумент и возвращает значение, а интерфейс показывает его. Встроенная поддержка статистического профилирования относится к измерению работающей программы. Она не ускоряет код сама, а помогает увидеть горячие участки до оптимизации.

ЧастьЗа что отвечаетЧто проверить
Синтаксисраспаковка в comprehensions и lazy imports меняют выполнение кодаинтерпретатор 3.15 принимает файл без SyntaxError
Новые типыfrozendict и sentinel выражают ограничения данныхпопытка изменить frozendict завершается ожидаемой ошибкой
Инструментыпрофилирование показывает, где программа тратит времяизмеряется реальная функция, а не пустой пример

Не переносите демонстрационный API в рабочий проект только потому, что он новый. Сначала сформулируйте проблему. Если обычного словаря достаточно, frozendict не добавит ценности. Если None не используется как данные, отдельный sentinel тоже может быть лишним. Не прячьте поток в одном обработчике: сохраните вход, проверьте его, вызовите операцию и только затем обновите интерфейс.

Проверьте границу Передайте None в функцию find и сравните результат с вызовом без аргумента. Именно это различие оправдывает sentinel. Меняйте одно условие за прогон, чтобы видеть причину.

Проверяем проект и добавляем свою функцию

Добавьте к файлу шестой блок: функцию, которая пытается изменить frozendict и ловит TypeError с коротким объяснением. До правки запишите ожидаемое поведение одним предложением. После граничного теста повторите обычный сценарий.

Проверка своими руками
  1. Сохраните ожидаемый результат: файл запускается в Python 3.15, печатает ожидаемые значения и не использует сторонние библиотеки.
  2. Измените правило: добавьте собственный пример для одного новшества и подпишите, какую проблему оно решает. Сначала предскажите итог.
  3. Передайте граничное значение и убедитесь, что приложение не падает.
  4. Верните корректные данные и объясните роли трёх основных частей.
Готово, если выполняются все пункты
  • интерпретатор сообщает версию 3.15
  • каждая функция печатает подписанный результат
  • поведение меняется только в выбранном блоке
  • видно, какой синтаксис или API относится именно к 3.15

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

Четыре контрольные точки Python 3.15
Четыре проверки перед следующим шагом. Каждый следующий этап начинается после наблюдаемого результата.

Что запомнить и куда двигаться дальше

Для рабочего проекта сначала проверьте поддержку версии библиотеками и окружением деплоя. Учебный файл можно запускать отдельно уже сейчас, не меняя системный Python. Для закрепления откройте в проекте Python с uv, в статье про pytest и в разборе Ruff.

Как изучить тему в Кодике

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

ШагЧто разобратьМини-проверка
1. ОсноваСписки, словари, функции и значения NoneОбъясните вход и выход функции.
2. ИнструментЧтение What’s New и запуск конкретной версии через uvПовторите команду по памяти.
3. ПроектПять независимых демонстраций с ожидаемым выводомПроверьте два сценария.
4. РефакторингСравнение старого и нового решения одной задачиРазделите ввод, логику и вывод.

После эксперимента оставьте себе таблицу «возможность, проблема, ограничение», а не список новых имён. Базовый синтаксис закрепите через курс Python.

Запуск старым python

Команда python может указывать на 3.13 или другую версию. Сначала печатайте sys.version.

Новые API в проде без проверки

Библиотеки и хостинг могут ещё не поддерживать 3.15. Проверяйте матрицу совместимости.

Смешивание пяти примеров

Одна ошибка останавливает весь файл и скрывает остальные. Держите блоки в отдельных функциях.

Новое ради нового

Синтаксис оправдан только понятной задачей и улучшением читаемости.

Сверяйтесь с первичной документацией. Команды и ограничения примера проверены по What’s New in Python 3.15. Если версия инструмента изменилась, официальный источник важнее старого скриншота.

Что получится в итоге

Готовый результат проекта: Python 3.15 для новичка: 5 новых возможностей, которые можно попробовать сразу
Так выглядит законченный учебный проект: есть понятный вход, видимый результат, защита от неверных данных и место для следующего улучшения.

Короткие ответы
Зачем нужен отдельный sentinel, если есть None?

None может быть допустимым значением аргумента, а sentinel обозначает именно отсутствие значения.

Можно ли изменить frozendict после создания?

Нет. Это неизменяемое отображение, и попытка присвоить ключ должна завершиться ошибкой.

Что проверять первым, если Python 3.15 не запускается?

Версию среды, текущую папку, команду запуска и первую строку ошибки.

Как понять, что проект Python 3.15 работает?

Проверьте основной сценарий, неверный ввод, повторный запуск и один граничный случай.

Можно ли начать с готового кода?

Да. Добейтесь результата, измените одно правило и восстановите ключевую функцию без копирования.

Сделайте один осознанный шаг дальше

Выберите одно улучшение и проведите его от ввода до результата.

Если не хватает основы, перейдите курс Python, затем восстановите ключевую функцию без подсказки.