# Версии Python: Python 2 и 3, что нового в 3.10–3.15 и какую версию ставить

URL: https://skillaria.top/ru/guides/python/versii-python

Актуальная ветка — 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», так что изменения версий разобраны на практике.

## FAQ

**Что такое IDLE Python 3.10 64-bit в меню Пуск?**

Это встроенная простая среда разработки, которую ставит установщик с python.org; в названии указаны версия интерпретатора и разрядность. Если там 3.10, у вас стоит версия, поддержка которой заканчивается, — лучше поставить свежую.

**Можно ли обновить Python 3.12 до 3.15 поверх?**

Минорные версии ставятся рядом, а не поверх: после установки 3.15 старая остаётся, и её можно удалить отдельно. Библиотеки для новой версии нужно установить заново или пересоздать виртуальное окружение.

**Чем отличается 64-bit от 32-bit версии?**

64-битная версия может использовать больше памяти и подходит для всех современных компьютеров; 32-битную берут только для очень старых систем.

**Зачем нужны альфа- и бета-версии?**

Это предварительные сборки следующей версии для тестирования библиотек и проектов; для учёбы и работы ставьте только финальные релизы.


---
Source: Skillaria.Top (https://skillaria.top)
