Содержание
Python 3.15 вышел в октябре, а вместе с ним — несколько изменений, которые заметны без микроскопа и знания внутренностей интерпретатора. Мы выбрали четыре: короткий способ собрать списки, неизменяемый словарь, более предсказуемую работу с текстом и импорт по требованию. Показываем на небольших примерах, где это пригодится.
1. Списки списков можно «распаковать» короче
Представьте: у вас есть баллы по трём попыткам, а нужен один общий список. Раньше для этого часто писали два вложенных for. В Python 3.15 можно поставить звёздочку прямо в генераторе списка:
groups = [[3, 5], [8, 13], [21]]
all_scores = [*group for group in groups]
print(all_scores) # [3, 5, 8, 13, 21]
Результат тот же, что у старой записи [x for group in groups for x in group]. Новый вариант легче читать, когда вы просто соединяете наборы значений. Если Python у вас старее 3.15, он такой синтаксис не поймёт.
2. Словарь, который нельзя случайно изменить
Обычный dict удобно менять, но иногда это риск. Например, настройки программы должны оставаться одинаковыми на протяжении расчёта. Новый frozendict ведёт себя как словарь для чтения, но не позволит перезаписать ключ.
settings = frozendict({"theme": "dark", "autosave": True})
print(settings["theme"]) # dark
# settings["theme"] = "light" # TypeError
Если попытаться выполнить строку с присваиванием, Python выдаст ошибку TypeError. Есть нюанс: frozendict запрещает менять сам словарь, но вложенный список внутри него всё ещё можно изменить. Для неизменяемых настроек выбирайте и неизменяемые значения.
3. Текстовые файлы по умолчанию читаются как UTF-8
Раньше open() без параметра encoding мог использовать кодировку системы. Один и тот же файл с русским текстом открывался на одном компьютере и превращался в «кракозябры» на другом. В Python 3.15 кодировка по умолчанию — UTF-8. Это полезно, но старый файл в Windows-1251 сам по себе не исправится: для него всё равно нужно указать правильную кодировку.
В проектах, которые запускаются на разных версиях Python, лучше по-прежнему писать encoding="utf-8" явно. Тогда поведение видно прямо в коде, и смена версии ничего не подменит.
4. Импорт по требованию ускоряет запуск
Когда Python импортирует модуль, он выполняет его код ещё до того, как ваша программа дошла до полезной работы. В крупном проекте это может замедлить старт. Теперь можно написать lazy import: модуль загрузится только при первом обращении к нему.
lazy import json
print("Программа запущена")
data = json.loads("{\"score\": 5}") # json загрузится здесь
Для небольшого скрипта разница может быть незаметна. А если проект импортирует десятки тяжёлых библиотек, это стоит попробовать и измерить время запуска. Ошибка в ленивом импорте тоже появится позже — в момент первого использования модуля.
Стоит ли обновляться прямо сейчас?
Для нового учебного проекта Python 3.15 уже можно попробовать. Для рабочего проекта сначала проверьте, поддерживают ли эту версию ваши библиотеки и инструменты. Обновление интерпретатора само по себе не перепишет старый код на новый синтаксис — эти возможности можно осваивать постепенно.
Сначала узнайте свою версию командой ниже. Если хотите перейти на 3.15, скачайте текущий выпуск с официального сайта Python и создайте для проекта новое виртуальное окружение. Проверьте зависимости и тесты до замены интерпретатора в рабочем проекте.
python --version
# Если команда не найдена, попробуйте:
python3 --version
Источники
- Python Insider: Python 3.15.0 is here [Электронный ресурс]. — URL: https://blog.python.org/2026/10/python-3150-final-is-here/ (дата обращения: 05.11.2026).
- Python Docs: What’s new in Python 3.15 [Электронный ресурс]. — URL: https://docs.python.org/3.15/whatsnew/3.15.html (дата обращения: 05.11.2026).
- Python Docs: Built-in types [Электронный ресурс]. — URL: https://docs.python.org/3.15/library/stdtypes.html (дата обращения: 05.11.2026).



