Появился PEP 835, который предлагает сократить запись Annotated. Если пишете на Pydantic, FastAPI, Typer или SQLModel, вы видели это каждый день:



id: Annotated\[int, Field\(gt=0\)\] name: Annotated\[str, Field\(min\_length=3\)\]

PEP предлагает оператор @ для метаданных типа:

id: int @ Field\(gt=0\) name: str @ Field\(min\_length=3\)

Та же Annotated, просто запись короче.

Детали из предложения:
🔘@ связывает сильнее, чем |: запись int | str @ Meta читается как int | Annotated\[str, Meta\], а для объединения с метаданными нужны скобки \(int | str\) @ Meta;
🔘цепочка T @ m1 @ m2 разворачивается в плоскую Annotated\[T, m1, m2\], без вложенности;
🔘под капотом появляется встроенный тип types.AnnotatedType на C, а typing.Annotated станет ссылкой на него;
🔘старая форма Annotated\[X, Y\] никуда не денется, остаётся для совместимости.

Сокращение нацелено на Python 3.16, до этого его можно будет пробовать через typing\_extensions.

@zen_of_python
Просмотры: 161
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти