Обычно, функция принимает на вход значение, а на выходе отдаёт значение такого же типа. Так вот теперь в 3.12 не нужно отдельно писать
typing.TypeVar и указывать одно и то же имя переменной (1 скриншот).Достаточно будет просто задекларировать намерение использовать переменную типа
T и аннотировать все связанные аргументы и возвращаемые значения сразу при определении функции.Кроме того, тайп-алиасы с переменными типов тоже стало писать легче (2 скриншот), ведь отпала необходимость явно определять
TypeVar. В языке появляется новое «мягкое» ключевое слово type, которое ведёт себя по-разному в зависимости от контекста (как async).Кому интересно, можно подробнее почитать доки, там ещё много интересных фишек и тонкостей.
#новости

