PythonMiddleExperience

Какие версии, возможности или изменения экосистемы Python важно учитывать на собеседованиях в 2026 году?

Ключевые изменения 2024–2026: Python 3.13 с экспериментальным free-threaded режимом (без GIL), uv как замена pip/virtualenv, Ruff вместо flake8+black, Pydantic v2, TaskGroup для asyncio.

Python 3.12 и 3.13 — ключевые изменения

Python 3.12 (октябрь 2023)

  • f-string улучшения: многострочные f-строки, вложенные кавычки внутри {} — больше не нужны промежуточные переменные.
  • TypeVar с syntax sugar: type Point[T] = tuple[T, T] вместо громоздкого TypeVar.
  • @override decorator: явная пометка методов, переопределяющих родительский класс — ловит опечатки в именах.
  • Улучшения сообщений об ошибках: Python 3.12 даёт конкретные подсказки типа «Did you forget to call super().__init__()?»
  • Perf: 5% прирост в среднем по benchmark suite благодаря специализации инструкций.
# Python 3.12+ type alias syntax
type Vector = list[float]
type Matrix[T] = list[list[T]]

# Старый стиль
from typing import TypeAlias
Vector: TypeAlias = list[float]

Python 3.13 (октябрь 2024)

  • Experimental free-threaded build: python3.13t — сборка без GIL. Включается флагом PYTHON_GIL=0. Пока не production-ready — большинство C-расширений не адаптированы.
  • Новый REPL: многострочный ввод, подсветка синтаксиса, улучшенная история.
  • JIT-компилятор (экспериментальный): copy-and-patch JIT, 1–5% прирост на типичных нагрузках.
  • Удалены deprecated API: distutils (замена: setuptools), несколько модулей из legacy stdlib.

Изменения в экосистеме 2024–2026

  • uv (Astral): новый менеджер пакетов на Rust — замена pip + virtualenv + pip-tools. Установка в 10–100x быстрее. В 2025 стал де-факто стандартом для новых проектов.
  • Ruff: линтер и форматтер на Rust — замена flake8 + black + isort. Запускается за миллисекунды.
  • pyproject.toml как единый конфиг: setup.py и setup.cfg устарели. PEP 517/518/621 — стандарт.
  • Pydantic v2: переписан на Rust, в 5–50x быстрее валидации. Breaking changes в API.
  • asyncio стал зрелым: TaskGroup (Python 3.11+) заменяет gather для structured concurrency.
# Python 3.11+ TaskGroup — structured concurrency
import asyncio

async def fetch_all(urls: list[str]) -> list[str]:
    async with asyncio.TaskGroup() as tg:
        tasks = [tg.create_task(fetch(url)) for url in urls]
    return [t.result() for t in tasks]
    # При ошибке любой задачи — остальные отменяются автоматически

Что устарело и не стоит использовать в новых проектах

  • distutils — удалён в 3.12
  • setup.py — deprecated, используйте pyproject.toml
  • asyncio.coroutine decorator — удалён в 3.11
  • typing.List, typing.Dict — используйте встроенные list[str], dict[str, int] (Python 3.9+)

Подводные камни

  • Free-threaded Python 3.13 ещё не готов для production: большинство C-расширений (NumPy, pandas) требуют адаптации.
  • Pydantic v2 breaking changes: __fields__model_fields, .dict().model_dump(). Проверьте зависимости перед обновлением.
  • uv vs poetry: у uv нет полного lockfile с хешами для всех платформ сразу (решается в uv 0.4+).
  • match statement (3.10+): не является switch-case из Java; работает через структурный pattern matching — разная семантика.
  • Deprecation warnings: игнорирование предупреждений о deprecated API приводит к breaking change при обновлении.
  • EOL версии: Python 3.8 — EOL октябрь 2024. Поддержка безопасности прекращена.

What hurts your answer

  • Рассказывать устаревший подход как актуальную практику
  • Не отличать личный legacy-опыт от состояния экосистемы в 2026 году
  • Игнорировать migration notes и deprecated API

What they're listening for

  • Понимает актуальное состояние Python
  • Отличает современные практики от legacy-подходов
  • Учитывает миграции, deprecated API и совместимость

Related topics