TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.3K subscribers
Post #7509 3.21K
✅ PEP 747 принят: теперь мы можем типизировать сами аннотации

В мире Python-типизации долгое время была «серая зона». Если вы хотели передать в функцию класс, вы писали type[T]. Но как только дело доходило до сложных штук вроде int | str или list[int], тайп-чекеры начинали ругаться.

⚡️ Принятый PEP 747 вводит `TypeForm[T]`, и это именно то, чего не хватало библиотекам вроде Pydantic и FastAPI.

Раньше type[int] работал, потому что int — это класс. Но list[int] или int | str — это не классы, а специальные объекты типов.

❌ Попытка передать их в функцию с аннотацией type[T] выдавала ошибку в Mypy или Pyright. Разработчикам приходилось лепить Any, убивая всю пользу от статической проверки.

Теперь мы можем явно сказать: «Эта функция принимает форму типа»:

from typing import TypeForm

def trycast[T](target_type: TypeForm[T], value: object) -> T | None:
...

# Теперь это валидный код для тайп-чекера:
trycast(list[int], ["1", "2"]) # Вернет тип list[int] | None
trycast(int | str, 42) # Вернет тип int | str | None



Что это дает на практике:
1️⃣ Идеальное автодополнение: IDE будет точно знать, что возвращает ваша функция-фабрика или парсер, даже если вы передали туда сложный Generic или Union.
2️⃣ Безопасность библиотек: Авторы инструментов для сериализации и валидации смогут выкинуть «костыли» и сделать API максимально прозрачным.
3️⃣ Меньше `Any`: Теперь можно типизировать практически всё, что в Python считается валидной аннотацией.

Фишка появится в Python 3.15, но через typing_extensions её можно будет использовать гораздо раньше.

🔗 Подробности: https://clc.to/kX2xMg

А вы часто сталкивались с тем, что `type[T]` не хватало для ваших задач? Как выкручивались — через `Any` или просто игнорировали ошибки?

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека питониста

#буст
  • 👍 6
  • ❤ 2
More from @pyproglib
  1. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  2. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  3. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  4. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  5. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  6. Sep 15, 2026⏱️ Справочник по Big-O в Python Для тех, кто хочет писать не просто работающий, а эффектив…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →