Версии Python: Python 2 и 3, что нового в 3.10–3.15 и какую версию ставить
Актуальная ветка — Python 3, последняя стабильная версия — Python 3.15 (релиз 9 октября 2026); Python 2 не поддерживается с 2020 года. Новая версия выходит каждый октябрь и получает исправления около пяти лет, поэтому для новых проектов ставьте свежую 3.x, а узнать текущую версию можно командой python3 --version.
Сегодня живая ветка языка одна — Python 3. Последняя стабильная версия — Python 3.15, вышедшая 9 октября 2026 года, а Python 2 официально закончил жизнь ещё в 2020-м. Ниже — чем отличаются версии Python, что появилось в каждой из 3.10–3.15, какую ставить и как узнать, какая стоит у вас.
Как устроены версии Python
Номер версии состоит из трёх чисел: 3.15.0. Первое — мажорная версия (ветка языка), второе — минорная, в ней появляются новые возможности, третье — номер исправления, в нём только багфиксы. Когда говорят «версии Python», обычно имеют в виду минорные: 3.10, 3.11, 3.12 и так далее.
С 2019 года действует годовой цикл (PEP 602): новая минорная версия выходит каждый октябрь. Примерно за полгода до релиза выходят альфы, потом беты и кандидаты, а после релиза — исправления вида 3.15.1, 3.15.2. Обновляться между ними безопасно: поведение языка в патч-версиях не меняется.
Отсюда же путаница в поиске: «python 311» и «python 3.11» — это одно и то же, версия 3.11. Десятичной дробью номер не является, поэтому 3.10 новее, чем 3.9, а 3.15 новее, чем 3.2.
Python 2 и Python 3: в чём разница
Python 3 вышел в 2008 году и сознательно сломал обратную совместимость, чтобы исправить старые решения языка. Поэтому код для Python 2 часто не запускается в Python 3 без правок. Последняя версия второй ветки — 2.7, её поддержка закончилась 1 января 2020 года, финальный выпуск 2.7.18 вышел в апреле 2020-го.
| Что | Python 2 | Python 3 |
|---|---|---|
| Печать | print "hi" — оператор | print("hi") — функция |
| Строки | байты по умолчанию, Unicode — u"..." | str — всегда Unicode, байты — bytes |
| Деление | 7 / 2 даёт 3 | 7 / 2 даёт 3.5, целое — 7 // 2 |
| Ввод | raw_input() | input() |
| Диапазоны | range строит список, xrange — ленивый | range ленивый |
| Поддержка | нет с 2020 года | новая версия каждый год |
Если вы нашли учебник или ответ, где print написан без скобок, это Python 2 — материал устарел. Учить вторую ветку сейчас незачем: её не ставят в новые системы, библиотеки давно отказались от её поддержки, а знания о ней нужны разве что для переноса старого кода.
Что нового в Python 3.10–3.15
Ниже — главное в каждой версии, то, что меняет повседневный код. Полные списки изменений лежат в разделе What's New официальной документации.
Python 3.10 (октябрь 2021)
- Сопоставление с образцом
match/case(PEP 634) — разбор структур данных вместо цепочекif/elif. - Объединение типов через черту:
int | NoneвместоOptional[int](PEP 604). - Несколько контекстных менеджеров в скобках в одном
with. - Заметно более понятные сообщения об ошибках синтаксиса.
def describe(point):
match point:
case (0, 0):
return "начало координат"
case (x, 0):
return f"на оси X: {x}"
case _:
return "где-то ещё"
print(describe((3, 0))) # на оси X: 3
Python 3.11 (октябрь 2022)
- Скорость: проект Faster CPython ускорил интерпретатор в среднем примерно на четверть, на части задач — сильнее.
- Точные указатели в трейсбеке: стрелки
^^^^показывают, какое именно выражение в строке упало (PEP 657). - Группы исключений и
except*(PEP 654), заметки к исключениям черезadd_note(). - Модуль
tomllibдля чтения TOML — например,pyproject.toml.
Python 3.12 (октябрь 2023)
- Новый синтаксис обобщений:
def first[T](items: list[T]) -> Tи операторtypeдля псевдонимов типов (PEP 695). - f-строки оформлены как полноценная грамматика (PEP 701): внутри можно использовать те же кавычки, переносы и комментарии.
- Из стандартной библиотеки удалён устаревший
distutils. - Ещё более подробные подсказки в ошибках, например «забыли импортировать модуль?».
type Pair = tuple[int, int]
def first[T](items: list[T]) -> T:
return items[0]
songs = ["a", "b"]
print(f"Первая: {first(songs)!r}, всего {len(songs)}")
print(f"{"кавычки внутри"}") # работает с 3.12
Кстати, о частом вопросе «f-строки с какой версии»: сами f-строки появились ещё в Python 3.6, а свободу с кавычками и переносами внутри фигурных скобок добавил 3.12.
Python 3.13 (октябрь 2024)
- Новая интерактивная консоль: цвет, многострочное редактирование, история, команды
exitиhelpбез скобок. - Экспериментальная сборка без GIL (free-threaded, PEP 703) и экспериментальный JIT-компилятор (PEP 744).
- Удалены «мёртвые батарейки» — старые модули вроде
cgiиtelnetlib(PEP 594). - Срок исправлений ошибок для новых версий увеличен до двух лет.
Python 3.14 (октябрь 2025)
- Шаблонные строки, t-строки:
t"Привет, {name}"возвращают не готовую строку, а объект шаблона, который можно безопасно обработать (PEP 750). - Отложенное вычисление аннотаций (PEP 649) — меньше проблем с типами, объявленными ниже по файлу.
- Сборка без GIL перестала быть экспериментальной и получила официальную поддержку.
- Модуль
compression.zstd, подсветка синтаксиса в консоли,except A, B:без скобок.
Python 3.15 (9 октября 2026)
- Ленивый импорт
lazy import(PEP 810): модуль загружается при первом обращении, а не на старте. В замере из курса скрипт сlazy import pandasстартовал за 14 мс вместо 280 мс. - Встроенный неизменяемый словарь
frozendict(PEP 814). - Распаковка в генераторах списков:
[*g for g in groups](PEP 798). - Сэмплирующий профайлер Tachyon в стандартной библиотеке (PEP 799).
- UTF-8 по умолчанию при работе с файлами (PEP 686) — конец сюрпризам с кодировкой на Windows.
- Новые подсказки «Did you mean» в сообщениях об ошибках.
lazy import json # PEP 810
cfg = frozendict(limit=500) # PEP 814
flat = [*g for g in [[1, 2], [3]]] # PEP 798 -> [1, 2, 3]
print(flat, cfg["limit"])
# python -m profiling.sampling run app.py # PEP 799, Tachyon
Этот код запустится только на 3.15: на более старых версиях lazy import и распаковка в comprehension дают SyntaxError, а frozendict — NameError.
Сроки поддержки версий Python
Каждая версия живёт около пяти лет. Сначала она получает обычные исправления ошибок и регулярные патч-выпуски (с 3.13 — два года), затем только исправления безопасности до конца срока. После этого версия считается end-of-life: уязвимости в ней больше никто не закрывает.
| Версия | Релиз | Конец поддержки | Статус в октябре 2026 |
|---|---|---|---|
| 2.7 | 2010 | январь 2020 | не поддерживается |
| 3.9 | октябрь 2020 | октябрь 2025 | не поддерживается |
| 3.10 | октябрь 2021 | октябрь 2026 | поддержка заканчивается |
| 3.11 | октябрь 2022 | октябрь 2027 | только безопасность |
| 3.12 | октябрь 2023 | октябрь 2028 | только безопасность |
| 3.13 | октябрь 2024 | октябрь 2029 | исправления ошибок |
| 3.14 | октябрь 2025 | октябрь 2030 | исправления ошибок |
| 3.15 | октябрь 2026 | октябрь 2031 | новейшая |
Актуальный статус каждой ветки публикуется на странице Status of Python versions в Python Developer's Guide. Перед выбором версии для долгоживущего проекта стоит заглянуть туда.
Какую версию Python ставить
Для обучения и новых проектов — последнюю стабильную, сейчас Python 3.15. Аргумент «возьму проверенную 3.10» не работает: в октябре 2026 она перестаёт получать даже исправления безопасности, а учить язык по версии, которая уходит, значит потом переучиваться. Внутри Python 3 совместимость хорошая: код для старой версии почти всегда работает на новой, а вот обратное неверно.
Исключения бывают. Если нужная библиотека ещё не выпустила колёса под свежую версию (такое случается в первые недели после октябрьского релиза у пакетов с расширениями на C), возьмите предыдущую — 3.14. На сервере с долгим сроком жизни ориентируйтесь на версию из репозиториев дистрибутива или ставьте нужную через менеджер uv. Главное правило — не выбирать версию, у которой до конца поддержки меньше года.
| Ситуация | Что ставить |
|---|---|
| Учите язык с нуля | последнюю стабильную (3.15) |
| Новый проект | последнюю или предпоследнюю |
| Библиотека не поддерживает новинку | предыдущую минорную |
| Старый проект на 3.10 и ниже | планировать переход на поддерживаемую версию |
| Код на Python 2 | переносить на Python 3 |
Как узнать версию Python
В терминале достаточно одной команды. На macOS и Linux обычно используется python3, на Windows — python или лаунчер py.
$ python3 --version
Python 3.12.3 # старая версия — пора обновиться
$ python3 -V
Python 3.15.0
На Windows лаунчер показывает все установленные версии сразу, а uv — версии, которые он видит и может поставить:
py --list
uv python list
Изнутри программы версию даёт модуль sys. Кортеж sys.version_info удобно сравнивать, чтобы скрипт сам проверял, подходит ли ему интерпретатор:
import sys
print(sys.version) # полная строка с датой сборки
print(sys.version_info[:3]) # например (3, 15, 0)
if sys.version_info < (3, 10):
raise SystemExit("Нужен Python 3.10 или новее")
Если команда python3 --version показывает не ту версию, которую вы ставили, значит в PATH первым найден другой интерпретатор. Проверить, какой именно, можно командой which python3 на macOS и Linux или where python на Windows.
Несколько версий на одном компьютере
Держать рядом 3.13 и 3.15 — нормально: каждая ставится в свою папку. Удобнее всего управлять ими через uv: uv python install 3.15 скачивает версию, а uv python pin 3.15 закрепляет её за проектом в файле .python-version. Системный Python на Linux лучше не трогать и не обновлять вручную — на нём работают утилиты самой ОС.
Минимальную версию проекта указывают в pyproject.toml, в поле requires-python. Тогда установщик пакетов не даст поставить проект на неподходящий интерпретатор.
[project]
name = "expenses"
version = "0.1.0"
requires-python = ">=3.15"
Итог
Актуальные версии Python — ветка 3, из них новейшая — 3.15 с ленивым импортом, frozendict и UTF-8 по умолчанию. Python 2 закончился в 2020 году, 3.10 уходит с поддержки в октябре 2026, поэтому учиться и начинать проекты стоит на свежей версии. Проверить свою — python3 --version. В курсе каждая тема заканчивается блоком «Что нового в 3.10–3.15», так что изменения версий разобраны на практике.
Частые вопросы
Что такое IDLE Python 3.10 64-bit в меню Пуск?
Это встроенная простая среда разработки, которую ставит установщик с python.org; в названии указаны версия интерпретатора и разрядность. Если там 3.10, у вас стоит версия, поддержка которой заканчивается, — лучше поставить свежую.
Можно ли обновить Python 3.12 до 3.15 поверх?
Минорные версии ставятся рядом, а не поверх: после установки 3.15 старая остаётся, и её можно удалить отдельно. Библиотеки для новой версии нужно установить заново или пересоздать виртуальное окружение.
Чем отличается 64-bit от 32-bit версии?
64-битная версия может использовать больше памяти и подходит для всех современных компьютеров; 32-битную берут только для очень старых систем.
Зачем нужны альфа- и бета-версии?
Это предварительные сборки следующей версии для тестирования библиотек и проектов; для учёбы и работы ставьте только финальные релизы.
Эта тема подробно разобрана с практикой в курсе «Python 3.15: от новичка до профи».
Перейти к курсу